【问题标题】:laravel eloquent search concat conditionlaravel eloquent 搜索 concat 条件
【发布时间】:2015-02-07 08:28:15
【问题描述】:

我有这两张桌子,一张是这张桌子

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

任何人都有一个很好而详细的关于 eloquent 与关系嵌套查询(有很多嵌套和或)的教程,你能和我分享一下吗?提前致谢

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

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

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

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

    【讨论】:

    • 我已经更新了我的问题。我需要能够使用 first_name 或 last_name 查询字段
    • 那我的回答有什么问题?使用orwhere 过滤first_namelast_name。我教你怎么做。
    • 表格实际上是动态的,first_name 不是单元格标题。相反,它是单元格内的值
    • 好吧,这让它与众不同。但是你怎么知道哪个first_name属于哪个last_name呢?数据库/表设计对我来说有点奇怪。也许你可以在你的问题中解释你的设计,以及你想通过这个设计实现什么。
    • 我将record_id添加到表中,其中record_id是来自父表的外键,基本上我正在搜索将具有XXX的名字或XXX的姓氏的记录
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 2017-03-21
    • 2018-09-08
    • 2014-10-25
    • 1970-01-01
    相关资源
    最近更新 更多