我有一个数组,即
$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."%");
但我不会返回预期的结果。请帮帮我。
答案 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();
答案 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;
}
}