【问题标题】:How to check hasMany relation record is empty in eloquent laravel如何在 eloquent laravel 中检查 hasMany 关系记录是否为空
【发布时间】:2017-09-14 01:13:56
【问题描述】:

我需要获取那些没有加入的记录有很多表 我的查询是这样的

$result = Recipes::select('id')->where("name", 'like', '%' . $item . '%')
                    ->with(['categoryItem'])
                    ->get();

我的输出是

Array
(
    [0] => Array
        (
            [id] => 1
            [category_item] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [foodable_id] => 1
                            [foodable_type] => Recipes
                            [created_at] => 2017-04-14 16:18:22   
                        )

                )

        )

    [1] => Array
        (
            [id] => 4
            [category_item] => Array
                (
                )

        )

)

我只想获取那些具有空 category_item 详细信息的记录。在下面的示例中,我想获取索引 1 记录,那么如何通过查询给出条件

【问题讨论】:

    标签: php sql laravel eloquent


    【解决方案1】:

    你好也许这可以帮助。 不要忘记在文件顶部添加:

    use DB;
    

    你的结果会是这样的

    $result = Recipes::select('id')->where("name", 'like', '%' . $item . '%') ->whereHas('categoryItem', function($q) { $q->where(DB::raw('count(*)),'>', 0); })->get();

    我没有测试计数功能希望这能工作,祝你好运

    【讨论】:

      【解决方案2】:

      如果我理解正确并且你想获得没有categoryItem 的recipies,你想使用doesntHave() 方法:

      Recipes::where('name', 'like', '%'.$item.'%')
             ->doesntHave('categoryItem')
             ->get();
      

      我假设categoryItem 是定义关系,因为您试图在with() 方法中使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-22
        • 2020-01-14
        • 2015-10-20
        • 1970-01-01
        • 2018-12-25
        • 2016-03-17
        相关资源
        最近更新 更多