我有这两个表,一个是这个表
id field_name value record_id
1 first_name john 1
2 last_name pencer 1
3 first_name jame 2
4 last_name mellow 2
我有一个$ filter_name变量,它将查看子表,该表可以包含first_name,last_name或两者来进行过滤,我该怎么做?我试过这个
$query = $table::with(
array(
'detail', function($qry) use ($filter_name)
{
$qry->where('field_id', '=', '1');
$qry->where('value', 'like', '%'.$filter_name.'%');
$qry->where('field_id', '=', '2');
$qry->where('value', 'like', '%'.$filter_name.'%');
}
)
);
$query->orWhereHas('detail', function($qry) use ($filter_name){
$qry->Where(function($q) use ($filter_name)
{
$q->where('field_id', '=', '1');
$q->where('value', 'like', '%'.$filter_name.'%');
$q->where('field_id', '=', '2');
$q->where('value', 'like', '%'.$filter_name.'%');
}
});
只是在搜索first_name时返回,我不知道如何让它能够通过last_name查看
任何人都有一个关于嵌套查询的雄辩的详细教程(有很多嵌套和或者)你能和我分享吗?提前谢谢
答案 0 :(得分:0)
在这种情况下你必须使用orwhere
$qry->where('first_name', 'like', '%'.$filter_name.'%');
->orwhere('last_name', 'like', '%'.$filter_name.'%');