簡體   English   中英

Laravel當使用'with'時返回null

[英]Laravel belongsTo returning null when using 'with'

我剛開始使用Laravel,所以請原諒。

我有一個UserOrder模型,一個用戶有很多訂單:

# 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM