2017-10-15 85 views
1

Laravel 5.5。當我使用控制器這樣的:Laravel得到()with()

$ad = Ad::get(); 
$category = Category::get(); 
$categoryItem = CategoryItem::get(); 

$c = CategoryItem::with('ad')->get(); 

我得到這樣的觀點:屬於關聯AD和類別類

{"id":1,"ad_id":"1","cat_id":"1","created_at":"2017-10-14 00:00:00","updated_at":"2017-10-14 00:00:00","ad":{"id":1,"title":"Test 1","created_at":"2017-10-14 00:00:00","updated_at":"2017-10-14 00:00:00"}} 

{"id":2,"ad_id":"2","cat_id":"2","created_at":"2017-10-14 00:00:00","updated_at":"2017-10-14 00:00:00","ad":{"id":2,"title":"Test 2","created_at":"2017-10-14 00:00:00","updated_at":"2017-10-14 00:00:00"}} 

{"id":3,"ad_id":"3","cat_id":"1","created_at":"2017-10-14 00:00:00","updated_at":"2017-10-14 00:00:00","ad":{"id":3,"title":"Test 3","created_at":"2017-10-14 00:00:00","updated_at":"2017-10-14 00:00:00"}} 

{"id":4,"ad_id":"4","cat_id":"2","created_at":"2017-10-14 00:00:00","updated_at":"2017-10-14 00:00:00","ad":{"id":4,"title":"Test 4","created_at":"2017-10-14 00:00:00","updated_at":"2017-10-14 00:00:00"}} 

CategoryItem模型。

然而,當我嘗試用分類得到CategoryItem,我的意思是這樣的:

​​

我得到這個觀點,與NULL類別的對象旁邊:

{"id":1,"ad_id":"1","cat_id":"1","created_at":"2017-10-14 00:00:00","updated_at":"2017-10-14 00:00:00","category":null} 

{"id":2,"ad_id":"2","cat_id":"2","created_at":"2017-10-14 00:00:00","updated_at":"2017-10-14 00:00:00","category":null} 

{"id":3,"ad_id":"3","cat_id":"1","created_at":"2017-10-14 00:00:00","updated_at":"2017-10-14 00:00:00","category":null} 

{"id":4,"ad_id":"4","cat_id":"2","created_at":"2017-10-14 00:00:00","updated_at":"2017-10-14 00:00:00","category":null} 

分類模型的hasMany兩個廣告和CategoryItems。

我實際上想要做的是能夠通過CategoryItem同時獲得廣告和類別,標題,ID和其他信息......我只需要了解這一點,以便稍後可以更改通過ID獲取項目獲取項目通過塞名稱...

回答

2

由於您使用的不是category_id定製外鍵名cat_id,使你的代碼工作,你需要指定的關係定義外鍵:

public function category() 
{ 
    return $this->belongsTo(Category::class, 'cat_id'); 
} 

雄辯確定默認外鍵nam e通過檢查關係方法的名稱並在_id後面加上方法名稱。您可以通過自定義鍵名作爲第二個參數belongsTo方法

https://laravel.com/docs/5.5/eloquent-relationships#one-to-many-inverse