Nous avons deux modèles:Paginate avec Eloquent mais sans instanciation modèles
- SimpleModel (id, pays, code)
- ComplexRelatedModel (id, nom, adresse)
SimpleModel a beaucoup ComplexRelatedModel , puis
class Product extends Model
{
protected $fillable = [
'name'
];
/* hasOne */
public function complexRelatedChild()
{
return $this->hasOne(self::class, 'parent_id', 'id');
}
}
Si nous
$simples = SimpleModel
->with('complexRelatedChild')
->simplePaginate(100000 /* a lot! */);
Et nous avons besoin que faire
foreach ($simples as $simple) {
echo $simple->complexRelatedChild->name;
}
Toute ComplexChild a hydratated et prêt. Cela prend beaucoup de mémoire dans mon cas. Et nous avons besoin d'un seul champ sans aucune fonctionnalité ou caractéristique du modèle.
Il est possible d'utiliser un champ de données à partir d'objets connexes ou avec éloquent ce n'est pas possible?
Merci beaucoup pour votre réponse. Grande solution, vous me comprenez bien. (Désolé pour mon mauvais anglais). Si vous pensez que c'est la meilleure solution, génial. Je vous ai un autre meilleur, je vous entends: P J'ai besoin d'un total de ressources parce que le client obtient toutes les données et sincronise avec indexDB une fois par jour. Si je pagine, le client doit obtenir une page par page. – pablorsk
@pablorsk: J'ai mis à jour ma réponse avec une autre option que vous pourriez essayer. Bonne chance! –
votre mise à jour résoudre mon problème! le mauvais côté est de refaire les requêtes SQL. Mais la mémoire utilisée est seulement de 30%. – pablorsk