I’m just getting started with Laravel so please forgive any noobness.
I have a User
and Order
model, a user has many orders:
# 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'); }
So I think I have the above right.
But when I do this:
$users = User::with('orders')->find(1); return $users;
I get Call to a member function addEagerConstraints() on null
.
However, if I do it the other way around, it works great:
$orders = Order::with('User')->get(); return $orders;
What am I doing wrong / what don’t I understand?! Or is my problem bigger than I think?
Database:
Advertisement
Answer
The problem is you don’t have return
for your orders
relationship. It should be:
public function orders(){ return $this->hasMany('Order'); }
You should also use your relationships case sensitive. you showed:
$orders = Order::with('User')->get();
is working, but you should rather use
$orders = Order::with('user')->get();
to avoid extra queries to your database in future