Cette question est unique car elle pose des problèmes uniques tels que:
Supposons que vous ayez un grand avec () comme ceci:
$order = Order::with([ 'company', // select only id,name, size 'complaints', // select only id, name , body 'person', 'items', 'items.product', // select only id, name , price 'items.product.stockManagement', 'status', // select only id 'items.product.media', 'items.product.mainProduct', 'items.product.mainProduct.media' ])->findOrFail($id);
Comment puis-je ensuite sélectionner avec toutes leurs relations mais des colonnes spécifiques pour certaines d'entre elles ?
$order = Order::with([ 'company', 'complaints', 'person', 'items', 'items.product', 'items.product.stockManagement', 'status', ])->findOrFail($id);
3 Réponses :
Comme ceci:
$books = App\Book::with('author:id,name')->get();
Le la documentation est très brève sur le chargement de colonnes spécifiques (vous devez même faire défiler un peu vers le bas jusqu'à l'en-tête qui dit "Eager Loading Specific Columns").
Il se peut que vous n'ayez pas toujours besoin de toutes les colonnes des relations que vous récupérez. Pour cette raison, Eloquent vous permet de spécifier les colonnes de la relation que vous souhaitez récupérer:
$order = Order::with([ 'company:id,name,size', 'complaints:id,name,body', 'person', 'items', 'items.product:id,name,price', 'items.product.stockManagement', 'status:id', 'items.product.media', 'items.product.mainProduct', 'items.product.mainProduct.media' ])->findOrFail($id);
Remarque:
Lorsque vous utilisez cette fonctionnalité, vous devez toujours inclure la colonne id et toutes les colonnes de clé étrangère pertinentes dans la liste des colonnes que vous souhaitez récupérer.
Veuillez décrire votre réponse.
@unclexo mieux?
Oui c'est le cas. Merci beaucoup!
Vous pouvez également fournir un rappel pour des requêtes de relations plus avancées.
Order::with([ 'company' => function ($q) { $q->select('id', 'name'); } ])
$order = Order::with( ['company' => function($query) { $query->select('id','name','size') }), 'complaints' => function($query) { $query->select('id','name','body') }), 'person', 'items', 'items.product' => function($query) { $query->select('id','name','price') }), 'items.product.stockManagement','status'=> function($query) { $query->select('id') }),'items.product.media', 'items.product.mainProduct', 'items.product.mainProduct.media'])->findOrFail($id);
Est-ce que cela répond à votre question? Obtenir des colonnes spécifiques à l'aide de la fonction «With ()» dans Laravel Eloquent < / a>
Il se peut que ce soit un doublon, mais l'autre question a beaucoup de réponses inutiles, mais peut-être que ce message pourrait également être utile.
@DouwedeHaan Merci, la question que vous avez liée semble poser la même chose, mais ici, l'arène la plus votée donne une image claire et précise, contrairement aux commentaires les plus votés sur l'autre question