/ / laravel retournant l'objet entier à la sortie - php, laravel

laravel retournant l'objet entier à la sortie - php, laravel

J'ai rencontré un problème et je ne sais pas quoi fairesuivant. J'essaie donc de créer une relation catégorie-sous-catégorie et de répertorier toutes les sous-catégories sous leurs parents. Cela fonctionne mais je ne peux pas obtenir le nom d'une sous-catégorie car je l'obtiens.

[{"id":2,"name":"dadasda","category_id":2,"created_at":"2017-05-16 09:38:49","updated_at":"2017-05-16 09:38:49"},{"id":2,"name":"djhasjkdhaskjd","category_id":2,"created_at":"2017-05-16 09:56:07","updated_at":"2017-05-16 09:56:07"}]

quand j'essaie de le sortir comme ça

@foreach($categories as $category)

<div class="panel panel-info">
<div class="panel-heading">{{$category->name}}</div>
</div>

<p>{{$category->subcategory}}</p>

@endforeach

mais si par exemple, j'essaie de le faire comme ça

{{$category->subcategory->name}}

Je reçois cette erreur

Property [name] does not exist on this collection instance. (View: /Users/admin/Desktop/LaraProjects/cadilab/resources/views/welcome.blade.php)

Je me sers de cela pour créer une relation

public function subcategory()
{
return $this->hasManyThrough(
"AppSubcategory", "AppCategory",
"id", "category_id", "id"
);
}

Réponses:

2 pour la réponse № 1

Modèle de catégorie

public function subcategory()
{
return $this->hasOne("AppSubcategory", "category_id", "id");
}

Vue

//if used hasOne
$category->subcategory->name

//if used hasMany
foreach($category->subcategory as $subcategory) {
$subcategory->name
}

0 pour la réponse № 2

En regardant la collection que vous avez fournie, vous êtesobtenir plusieurs enregistrements, cela signifie donc que vous avez actuellement défini le fait que chaque catégorie peut avoir plusieurs sous-catégories. Si cela est correct, il vous manque un foreach supplémentaire.

@foreach($categories as $category)

<div class="panel panel-info">
<div class="panel-heading">{{$category->name}}</div>
</div>

@foreach($category as $subcategory)

<p>{{$subcategory->name}}</p>

@endforeach

@endforeach

PS: Cela peut entraîner le problème N + 1, assurez-vous donc de charger les relations avec impatience. https://laravel.com/docs/5.4/eloquent-relationships#eager-loading