Laravel渴望在两端都有条件的情况下加载

时间:2018-10-10 07:29:23

标签: mysql laravel laravel-5 eloquent

我正在这样获取sql查询:

  

从不存在的geofilter_activations中选择*(从snap_submissions其中geofilter_activations = purchase_idsnap_submissions的{​​{1}}中选择*)和{ {1}} = 0和purchase_id <2018-10-10 07:15:42按status desc限制1排序

但是我在subscription_id的wherenotnull中添加的查询发生了什么? 它不在查询输出中。给我一种优化查询并使之运行的方法。

created_at

GeoFilterActivation模型为:

id

1 个答案:

答案 0 :(得分:0)

也许可以通过以下方式帮助您:

$result = GeofilterActivation::with(['purchase' => function($query) {
        $query->whereNotNull('subscription_id');
    }])
    ->doesntHave('submission_data')
    ->where('status','0')
    ->where('created_at', '<', $dt->subMinutes($time_before)->toDateTimeString())
    ->OrderBy('id','desc')
    ->first();

查询中不包含load的原因是,查询执行后调用了load,因此必须使用with将查询中的关系包括在内。您上面提到的带有负载的示例实际上是lazy load,因为您在需要时请求一个对象。