0
votes

Modèle d'injection et valeur de retour "avec" relation dans le contrôleur à Laravel

J'essaie de créer une application sur laravel code> et je souhaite savoir si nous pouvons utiliser avec code> relation lors de l'injection du modèle à l'intérieur d'une fonction de contrôleur par exemple:

J'ai un modèle nommé flux code> et j'ai un modèle nommé standard code>. standard code> appartient à flux code> de sorte que mon code ressemble à: p> xxx pré>

maintenant dans mon standardController code> J'ai suivi la fonction pour afficher le modèle: P>

public function show(Standard $standard)
{
    return response()->json(['data' => $standard], 200);
}


1 commentaires

Vous voulez dire $ standard-> charger ('flux') i.e chargement paresseux?


3 Réponses :


5
votes

avec () code> est pour quand vous obtenez initialement le (s) modèle (s). Si vous avez déjà le (s) modèle (s), vous pouvez plutôt utiliser charger () code>. C'est ce qu'on appelle Loading désireux paresseux .

public function show(Standard $standard)
{
    $standard->load('stream');

    return response()->json(['data' => $standard], 200);
} 


0 commentaires

1
votes

Vous avez quelques options ici:

1) Vous pouvez utiliser Ressources API . Ceci est mon approche préférée.

2) Si les ressources API ne sont pas votre tasse de thé, il vous suffit de charger la relation d'une manière ou d'une autre. Une façon de le faire est $ standard-> charger ('flux') . Une autre façon est de simplement accéder à la relation: $ standard-> flux .

Que se passe-t-il ici, c'est que toutes les relations consultées en font une clé d'un modèle, ce qui rend la sérialisation par défaut JSON un peu imprévisible. En raison de cela, je préfère être explicite avec les ressources de l'API.

3) Vous pouvez modifier le STANDARD $ avec le tableau pour inclure flux , mais je ne suis pas un fan de cette approche comme Cela signifie que chaque fois que les enregistrements standard sont extraites, ils vont automatiquement récupérer la relation flux .

avec () est une méthode que vous appelez un objet de constructeur éloquent qui cherchera des relations pour chargement désireux . Dans ce cas, vous travaillez avec une instance , pas un constructeur éloquent.


0 commentaires

1
votes

Veuillez essayer ce code. Explication plus détaillée disponible à Laravel Docs

$standard->load('stream');
return response()->json(['data' => $standard], 200);


0 commentaires