雄辩的关系-whereNotNull不存在

时间:2018-12-05 09:47:19

标签: laravel eloquent

我在Eloquent中有一个关系要查询。

$deliveryOverride = $product->days->whereNotNull('margin')
->where('price_id', $order['price_id'])
->where('product_id', $product->id)
->where('sale_at', date('Y-m-d', strtotime($day)))
->first();

我不断收到错误消息

  

其中NotNull不存在的方法。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

直接在Eloquent对象上调用关系属性时,将执行查询并返回Collection。集合上没有WhereNotNull函数。

如果要使用该函数查询关系,则必须直接调用该关系函数。由于查询将在数据库上进行,因此这也将提高性能。

$deliveryOverride = $product->days()  // Call relation function here
    ->whereNotNull('margin')
    ->where('price_id', $order['price_id'])
    ->where('product_id', $product->id)
    ->where('sale_at', date('Y-m-d', strtotime($day)))
    ->first();

有关此问题的更多信息,请参见此处的文档:https://laravel.com/docs/5.7/eloquent-relationships#querying-relations