[英]Laravel belongsTo returning null when using '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
收到Call to a member function addEagerConstraints() on null
。
但是,如果我反過來這樣做,則效果很好:
$orders = Order::with('User')->get();
return $orders;
我做錯了/我不明白什么? 還是我的問題超出了我的想象?
數據庫:
問題是您沒有orders
關系return
。 它應該是:
public function orders(){
return $this->hasMany('Order');
}
您還應該使用區分大小寫的關系。 您顯示了:
$orders = Order::with('User')->get();
正在工作,但您應該使用
$orders = Order::with('user')->get();
避免將來對數據庫進行額外查詢
對於遇到此問題的其他人,我也遇到了同樣的問題,但是我的問題是交換了外鍵/本地鍵。 例:
// This is correct for hasX relationships
public function user() {
return $this->hasOne('App\Models\User', 'user_id', 'local_key_user_id');
}
// This is correct for belongsTo relationships
public function user() {
return $this->belongsTo('App\Models\User', 'local_key_user_id', 'user_id');
}
請注意,對於hasX關系,外鍵是第二個參數,本地鍵是第三個參數。 但是,對於belongsTo關系,將這兩個交換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.