簡體   English   中英

如何與Laravel Eloquent回歸多重關系?

[英]How to return multiple relationships with Laravel Eloquent?

我有一個名為users的表。 每個用戶都有不同的東西:

  • 國家
  • 設備
  • 電腦
  • 類別

我已經為上述“事物”中的每一個創建了一個表格。 類似如下:

1 | United States
2 | United Kingdom
3 | Australia
4 | Canada
5 | Italy

等等...

我將這些值存儲在users表中,如下所示:

ID | Country | Device | Computer | Category |
---|---------|--------|----------|----------|
1  |       3 |      2 |        6 |        2 |
2  |       4 |      3 |        9 |        1 |

等等...

現在,上述每個數字都與相應表格的ID相關聯。

我想要的是做一個Eloquent Query並搜索所有users並從他們的幫助表中“替換”他們相應的值。

我正在考慮為users表中的每個事情做一個hasOne()關系,但后來我不確定如何立即獲取/調用它們。

有人可以幫我解決這個問題嗎?

$model = Model::with('relatedModel', 'relatedModelTwo')->get();

所以在你的情況下,它可能是這樣的。 如果您只想與user返回一個關系,請刪除其他關系。

$user = User::with('country', 'Device', 'Computer', 'Category')->get();

當您使用dd($user) ,您應該在relations數組屬性中看到相關的模型。

要從那里訪問關系的屬性,它就是簡單的

$user->device->deviceAttribute

編輯評論:

Eloquent將假設外鍵使用Model名稱。 因此,如果您的user表具有id列,則假定device表上將有一個名為user_id的列。 如果你這樣做了,那么你就完成了,不需要做任何事情。

如果您將列命名為將模型與其他內容相關聯,則需要將其作為關系方法中的第二個參數傳遞。

public function device()
{
    return $this->hasOne('App\Device', 'foreign_key_here',);
}

相反,如果您想獲取設備所屬的用戶,Eloquent將嘗試將設備表上的user_id列與用戶表上的id列進行匹配。 和以前一樣,如果您使用不同的列來關聯它們,請將外鍵聲明為第二個參數。

public function user()
{
    return $this->belongsTo('App\User', 'foreign_key_here',);
}

Laravel Doc一對一關系

你正在尋找這個: $books = App\\Book::with('author', 'publisher')->get();

查看文檔以了解加載多個關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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