在laravel中找到匹配的行

时间:2015-03-07 11:26:36

标签: php mysql sql laravel

这是我的表

Id   | No   |Group
1    | 1    |Alpha
1    | 1,2  |Alpha
1    | 2,4,5|Alpha

如何使用laravel eloquent找到No5的行

$Match = MyModel::whereIn('No', array(5))->get();

但它没有返回任何行。

当我试图查看执行的查询时,它显示了我

select * from `table` where `No` in (5) 

我如何在php和laravel中执行此操作

1 个答案:

答案 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();

(未测试的)

但是这永远不会是一个有效的查询,因为它不能使用索引;以逗号分隔的列表是一个坏主意(例如缺乏参照完整性)还有很多其他原因

真正的解决方案始终是正确规范数据库