Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        3年前关闭。
                                                                                            
                
        
我创建了一个表来存储票证的标签。我在值列中将多个标签保存为逗号(,)分隔的字符串。

+----+-----------+-------+---------------+---------------------+---------------------+
| id | ticket_id | key   | value         | created_at          | updated_at          |
+----+-----------+-------+---------------+---------------------+---------------------+
|  9 |        22 | label | Important,Bug | 2016-10-10 14:48:07 | 2016-10-10 14:48:07 |
| 17 |        21 | label |               | 2016-10-10 16:46:13 | 2016-10-10 16:46:13 |
+----+-----------+-------+---------------+---------------------+---------------------+


现在,我必须搜索标签并获取关联的ticket_id,我的搜索词是一个数组

array:1 [
  0 => "Important"
]


请帮我写一个查询

最佳答案

您应该尝试这样的事情:

$query = Model::where('value','like','%' . $array[0] . '%');

for($i = 1; $i < sizeof($array); $i++) {
    $query->orWhere('value','like','%' . $array[i] . '%');
}

return $query->get();


警告,只有在5.3版本之后才需要第一个where方法。在此之前,您可以直接从orWhere子句开始。


  雄辩的范围现在尊重范围约束的前导布尔值。
  例如,如果要使用orWhere约束启动范围
  它将不再转换为普通位置。如果你依靠
  此功能(例如,在循环中添加多个orWhere约束),
  您应确认第一个条件是正常情况,应避免
  任何布尔逻辑问题。

09-25 13:27