这是我的表
Id | No |Group
1 | 1 |Alpha
1 | 1,2 |Alpha
1 | 2,4,5|Alpha
如何使用laravel eloquent找到No
为5
的行
$Match = MyModel::whereIn('No', array(5))->get();
但它没有返回任何行。
当我试图查看执行的查询时,它显示了我
select * from `table` where `No` in (5)
我如何在php和laravel中执行此操作
答案 0 :(得分:1)
作为一个纯粹的Eloquent workround,你可以做类似的事情:
$id = 5
$Match = MyModel::with(array('No' => function($query) use($id) {
$query->where_id($id);
}))->get();
使用Raw和FIND_IN_SET,类似于:
$Match = MyModel::whereRaw(
'find_in_set(?, `No`)',
[5]
)->get();
(未测试的)
但是这永远不会是一个有效的查询,因为它不能使用索引;以逗号分隔的列表是一个坏主意(例如缺乏参照完整性)还有很多其他原因
真正的解决方案始终是正确规范数据库