Réduction du nombre de requetes
Hello à tous,
Dans le cadre d'un projet laravel, je suis confronté à un problème de performance lié à un trop grand nombre de requetes.
J'ai besoin d'une vue qui liste qui recupere des infos de plusieur table avec des relations. Actuellement dans mon controller j'ai :
$medias = Media::with(['mediagroup'])
->withCount('operations')
->withCount('contacts')
->orderBy('name')
->get();
Laravel DebugBar indique 293 requêtes ...
Existe t'il un moyen pour réduire le nombre de requêtes, soit en modifiant ma requête ? Est ce qu'il préconiser de passer par un repository ou cela n'a pas d'interêt.
Merci pou votre aide
Salut,
Tu as essayé comme ça ?
$medias = Media::with(['mediagroup'])
->withCount(['operations', 'contacts'])
->orderBy('name')
->get();
Hello,
Oui c'est pareil. Il y a un bouton uniquement visible si le média a des contacts avec un @if($media->contacts->count()). Le problème semble être là
@if($media->contacts->count())
<li class="list-inline-item ">
{{Form::open(['method' => 'DELETE', 'route' => ['medias.destroy', $media], 'id'=>'delete_media_'.$media->id])}}
<a href="javascript:void();" onclick="event.preventDefault(); document.getElementById('delete_media_{{$media->id}}').submit()"
data-toggle="tooltip" data-placement="top" title="" data-original-title="Supprimer">
<i class="bx bx-trash text-danger font-size-20"></i>
</a>
</li>
{{ Form::close() }}
@endif
Ah oui là on comprend mieux... Il faut aussi charger les contacts :
$medias = Media::with(['mediagroup', 'contacts'])
->withCount(['operations', 'contacts'])
->orderBy('name')
->get();
Mais ça semble redondant avec le comptage de withCount. Tu dois pouvoir écrire :
@if($media->contacts_count)
Ah oui, c'est nettemenet mieux; On passe à 150 requêtes.
Merci une fois de plus pour ton aide
Vous ne pouvez pas répondre à ce sujet.