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