Laravel приводит к возврату null при использовании 'with'
Я только начинаю с Laravel, поэтому, пожалуйста, простите любую пустоту.
У меня есть модель User
и Order
, пользователь имеет много порядков:
# Inside User model
public function orders(){
$this->hasMany('Order');
}
# Inside Order
public function user(){
return $this->belongsTo('User');
}
// Not sure if this is upsetting anything (also in Order)
public function products(){
return $this->belongsToMany('Product');
}
Итак, я думаю, что я прав.
Но когда я это делаю:
$users = User::with('orders')->find(1);
return $users;
Я получаю Call to a member function addEagerConstraints() on null
.
Однако, если я делаю это наоборот, он отлично работает:
$orders = Order::with('User')->get();
return $orders;
Что я делаю неправильно/что я не понимаю?! Или моя проблема больше, чем я думаю?
База данных:
![enter image description here]()
Ответы
Ответ 1
Проблема в том, что у вас нет return
для вашего отношения orders
. Это должно быть:
public function orders(){
return $this->hasMany('Order');
}
Вы также должны использовать свои отношения с регистром. вы показали:
$orders = Order::with('User')->get();
работает, но лучше использовать
$orders = Order::with('User')->get();
чтобы избежать дополнительных запросов к вашей базе данных в будущем