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 № 1Modè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