要在表中使用逗号分隔值检查的数组值,如果与值匹配,则返回所有行

时间:2015-11-09 10:03:42

标签: php mysql laravel-4

我有一个数组,即

$frame = Array(
   [0]=1,
   [1]=2,
   [2]=4 
);

我希望获得值表单“standard_product”,其中“frame_category”是列名,此列值看起来像 frame_category
4,7
1,3,4
6,7,8
如果$ frame的任何值与frame_category列的任何值匹配,则返回所有行。这里要求的结果是:
4,7
1,3,4

我解决这个问题的努力是:

Standard_product::Where('frame_category', 'LIKE', '%' . $frame . '%')->get()->toArray();
(SELECT * FROM  `standard_products` WHERE  `frame_category` LIKE  "%".$frame."%");

但我不会返回预期的结果。请帮帮我。

3 个答案:

答案 0 :(得分:1)

使用MySQL IN

$ids = join(',', $frame);
WHERE  frame_category IN ($ids)

将您的数组传递给MySQL

答案 1 :(得分:1)

在查询

中删除最后toArray()
Standard_product::where('frame_category', 'LIKE', '%'.$frame.'%')->get();

Standard_product::like('frame_category', '%$frame%')->get();

或者

$category = DB::table('Standard_product')
          ->where('frame_category', 'like', '%$frame%')
          ->get();

Where Clauses In laravel

答案 2 :(得分:1)

$frame = Array( [0]=1, [1]=2,[0]=4 );
foreach ($frame as $val) {
$query = mysql_query("SELECT * FROM  `standard_products` WHERE find_in_set(".$val.", frame_category)");
while($row = mysql_fetch_assoc($query)){
$result[] = $row;
}
}