Красноречивые отношения - где NotNull не существует - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть отношение в 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 голосов
/ 05 декабря 2018

Когда вы вызываете свойство отношения непосредственно для объекта 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...