我在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不存在的方法。
有什么想法吗?
答案 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