J'ai plusieurs éléments appelés affiches qui ont des journaux. Je veux commander ces affiches par date de création de ces journaux.Comment puis-je améliorer ma requête pour ne pas obtenir "Erreur fatale PHP: taille de la mémoire autorisée" (Commande et pagination dans laravel 5.2)
J'ai un modèle Postériser avec ce code:
class Poster extends Model {
protected $table = 'posters';
public function pos_log_resumenEnviado()
{
return $this->hasMany('App\models\PosterLog', 'pos_id')->where('log', 'Autores de poster enviado')->orWhere('log', 'Resumen de poster modificado')->latest();
}
Puis, dans mon contrôleur je récupère des résultats comme celui-ci:
$posters = Poster::with('pos_log_resumenEnviado', 'user')->where('state', 'Resumen pendiente de aceptacion')->get();
$posters = $posters->sortBy(function($pos)
{
if(sizeof($pos->pos_log_resumenEnviado) > 0)
return $pos->pos_log_resumenEnviado[0]->created_at;
})->take(1200);
Je reçois toutes les affiches et je les commander et prendre la premiers 1200 résultats. Cela a fonctionné très bien (avec une exécution lente) mais maintenant je reçois l'erreur de php que j'ai dite dans le titre. Erreur vient avant même la sortBy exécution, juste avec le get()
Si je ne devais pas utiliser sortBy je pourrais utiliser paginate() méthode mais je ne sais pas s'il y a une autre façon pour commander cela.
me semble que vous triez votre résultat avec PHP, pourquoi n'utilisez-vous pas MYSQL pour cela? – Mcsky
Parce que je ne sais pas comment utiliser MYSQL pour commander par ce champ. –
Je n'utilise pas Laravel, mais vous devriez lire la documentation pour effectuer une commande avec mysql. Ce sera plus rapide et éviter l'erreur de limite de mémoire php. – Mcsky