0

我有两张表,典型的master-detail,我打算做的是获取master的记录,而通过where的关系获得的注册号大于n

我一直这样做到现在

Master::withTrashed()
->with('details')
->withCount(['details' => function ($query) {

    $query->whereDate('date_init', '<', Carbon::now()->toDateString()); 
}]);

有了这个,我得到了给定条件的主人及其细节,但是有些老师说关系的计数是0,我想忽略。我怎样才能做到这一点?

4

2 回答 2

1

您正在寻找的是以下查询:

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

查询字面意思是:

全部给我Masters,还有那些已删除的,其中至少有一个附加Detail了过去的初始化日期。还急切地加载Details过去已初始化的所有附加内容。

于 2018-12-07T16:49:49.820 回答
0
Master::withTrashed()
->has('details')
->with('details')
->withCount(['details' => function ($query) {

    $query->whereDate('date_init', '<', Carbon::now()->toDateString()); 
}]);

正如 Namoshek 所指出的,修复了 whereHas to have。

于 2018-12-07T16:29:29.307 回答