2017-10-15 4 views
1

Laravel 5.5. Wenn ich Controller wie folgt verwenden:Laravel get() mit()

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

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

bekomme ich die Ansicht wie folgt aus:

{"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 Modell belongsTo beiden Ad und Kategorie-Klassen.

aber wenn ich versuche, CategoryItem mit Kategorie zu bekommen, ich meine so:

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

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

ich diese Ansicht, mit NULL neben der Kategorie Objekte:

{"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} 

Kategorie Modell hasMany beide Anzeigen und CategoryItems.

Was ich eigentlich tun möchte, ist in der Lage, Anzeigen und Kategorien, Titel, IDs und andere Informationen über CategoryItem zu bekommen ... Ich muss nur verstehen, damit später ändern Elemente durch IDs erhalten Elemente erhalten von slug Namen ...

Antwort

2

Da Sie mithilfe von benutzerdefinierten Fremdschlüssel Namen cat_id statt category_id, um Ihren Code funktioniert, müssen Sie den Fremdschlüssel in Beziehung Definition angeben:

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

Eloquent legt den Standard-Fremdschlüssel nam fest e indem Sie den Namen der Beziehungsmethode untersuchen und den Methodennamen mit _id anhängen. Sie können einen benutzerdefinierten Schlüsselnamen als zweites Argument an die belongsTo Methode

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

passieren