代码之家  ›  专栏  ›  技术社区  ›  DarkFenix

通过计算元素之间的关系laravel5来过滤元素

  •  0
  • DarkFenix  · 技术社区  · 6 年前

    我有两张表,典型的主细节,我打算做的是获得主记录,而通过关系的位置获得的注册号大于n

    我一直在做这个直到现在

    Master::withTrashed()
    ->with('details')
    ->withCount(['details' => function ($query) {
    
        $query->whereDate('date_init', '<', Carbon::now()->toDateString()); 
    }]);
    

    有了这个,我得到了主人和它的细节,以及给定的条件,但是有一些老师,他们的关系计数是0,我想忽略。我该怎么做?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Namoshek    6 年前

    您要查找的是以下查询:

    Master::withTrashed()
        ->with(['details' => function ($query) {
            $query->whereDate('date_init', '<', now());
        }])
        ->whereHas('details', function ($query) {
            $query->whereDate('date_init', '<', now());
        })
        ->get();
    

    查询字面意思是:

    给我一切 Masters ,也包括已删除的,其中至少有一个附加的 Detail 过去有一个初始化日期。也急着装载所有附件 Details 以前已经初始化过。

        2
  •  0
  •   Arthur Samarcos    6 年前
    Master::withTrashed()
    ->has('details')
    ->with('details')
    ->withCount(['details' => function ($query) {
    
        $query->whereDate('date_init', '<', Carbon::now()->toDateString()); 
    }]);
    

    如纳莫舍克所指出的,修正了必须具备的条件。