laravel雄辩搜索concat条件

时间:2014-12-09 12:33:46

标签: laravel eloquent

我有这两个表,一个是这个表

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查看

任何人都有一个关于嵌套查询的雄辩的详细教程(有很多嵌套和或者)你能和我分享吗?提前谢谢

1 个答案:

答案 0 :(得分:0)

在这种情况下你必须使用orwhere

$qry->where('first_name', 'like', '%'.$filter_name.'%');
    ->orwhere('last_name', 'like', '%'.$filter_name.'%');

这是文档http://laravel.com/docs/4.2/queries#advanced-wheres