J'ai deux modèles
item: p> recette: p> dans la migration J'ai: @foreach($recipes as $recipe)
<tr>
<td>{{ $recipe->recipecode }}</td> // this works
<td>{{ $recipe->itemcode }}</td> // this works
<td>{{ $recipe->item->name }}</td> // this doesn't work
<td>{{ $recipe->item->uom }}</td> // this doesn't work
<td>{{ $recipe->item->qty }}</td> // this doesn't work
</tr>
@endforeach
3 Réponses :
premier, Deuxièmement, veuillez en savoir plus sur Loading désireux . Ce que vous faites maintenant, c'est de multiples requêtes. C'est le n + 1, pour chaque recette que vous interrogez la base de données pour obtenir les articles. Vous n'avez pas besoin de faire cela, car ce n'est pas performant du tout. Utilisez Maintenant, gardez à l'esprit que $ recette-> item-> nom code> ne fonctionne pas comme prévu car
$ recette-> item code> est une collection de
app \ item < / code>, pas un
app \ item code> instance de modèle. C'est parce que vous avez défini la relation pour être " Hasmany " p>
recette :: avec ("élément ') -> sortde (" réciproque ") -> get () code>. p>
$ recette-> item code> n'est pas un seul élément, mais une collection d'articles appartenant à cette recette. Vous devrez probablement travailler un peu sur votre table pour afficher plusieurs articles pour une recette. P>
Puisque vous utilisez dans le recettes de récipients, vous pouvez accabler la charge. P> hasmany code>, vous devez suivre la convention de dénomination dans la fonction de dénomination
@foreach($recipes as $recipe)
<tr>
<td>{{ $recipe->recipecode }}</td> // this works
<td>{{ $recipe->itemcode }}</td> // this works
@foreach($recipe->items as $item)
<td>{{ $item->name }}</td>
@endforeach
</tr>
@endforeach
La première ligne "doit-elle" suivre ou "devrait-elle" suivre?
@Nabilfarhan Oui Doit vous suivre pour identifier facilement l'utilisation d'un nom de fonction spécifique
"Doit" signifie généralement que sans cela, le code ne fonctionnera pas. Par exemple, vous "devez" mettre fin à une déclaration avec point-virgule. Je pense que dans ce cas particulier, devrait sembler plus approprié.
Oui, également pour vous de distinguer le pluriel à une utilisation singulière également pour la lisibilité.
Autres réponses Partager Pourquoi vous ne pouvez pas utiliser directement La base de données que vous avez conçue a une autre relation. Comme, une recette a beaucoup d'articles. Cependant, l'inverse qu'un élément n'a qu'une seule recette semble tort. Vous pouvez cuisiner de nombreuses recettes avec un article. C'EST À DIRE. Vous pouvez faire des frites de poulet et du poulet au poulet avec du poulet. P> La conception de la base de données doit être quelque chose comme ça, P> $ recette-> item code>. Cependant, je pense qu'il y a une plus grande erreur dans la conception de la base de données.
recipes: code, name, uom
items: code, name
item_recipe: item_code, recipe_code, qty