通过计算元素的关系来过滤元素Laravel5

时间:2018-12-07 16:26:04

标签: php laravel laravel-5 eloquent

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

直到现在我一直在这样做

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

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

通过此操作,我可以在给定条件下获得母版及其详细信息,但是有些老师认为该关系的计数为0,我想忽略它。我该怎么办?

2 个答案:

答案 0 :(得分: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并带有过去的初始化日期。还渴望加载过去已初始化的所有附加function d2(strs, ...args) { var result = strs[0]; for (var i = 0; i < args.length; ++i) { var n = args[i]; if (Number(n) == n) { result += Number(args[i]).toFixed(2); } else { result += args[i]; } result += strs[i+1]; } return result; } f=1.2345678; s="a string"; console.log(d2`template: ${f} ${f*100} and ${s} (literal:${9.0001})`);

答案 1 :(得分:0)

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

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

修正了Namoshek指出的要去的地方。