relation()` contre `$model->relation()` dans Laravel Eloquent ?
" />
Différence entre les appels de méthode $model->relation(); et $model->relation dans Eloquent
Dans l'ORM Eloquent de Laravel, comprendre la distinction entre $model-> ;relation(); et $model->relation est crucial.
$model->relation()
L'appel de $model->relation() appelle directement la fonction de relation définie dans le modèle. Cette fonction ressemble généralement à :
<code class="php">public function distributors()
{
return $this->hasMany('Distributor');
}</code>
Copier après la connexion
En appelant $store->distributors(), vous obtenez la valeur de retour de $this->hasMany('Distributor'), qui est un instance de IlluminateDatabaseEloquentRelationsHasMany.
Quand utiliser $model->relation() : Cette méthode est utile lorsque vous devez personnaliser davantage la requête de relation avant de l'exécuter. Par exemple :
<code class="php">$distributors = $store->distributors()->where('priority', '>', 4)->get();</code>
Copier après la connexion
Utiliser $store->distributors()->get() est une alternative plus simple, mais elle donne le même résultat.
$model->relation
Laravel utilise une technique en coulisse qui permet un accès direct aux résultats de la relation en tant que propriétés. L'appel de $model->relation n'accède pas réellement à une propriété existante. Au lieu de cela, Laravel intercepte cet appel et l'achemine vers __get().
Cette méthode appelle finalement getAttribute() avec le nom de la propriété (« distributeurs »), qui vérifie si la relation est mise en cache (« relations » tableau). Dans le cas contraire, et si une méthode relationnelle existe, il tente de la charger (getRelationshipFromMethod). Enfin, le modèle récupère les résultats de la relation via getResults(), qui exécute la requête.
En substance, $model->relation est équivalent à $model->relation()->get (), renvoyant directement les résultats de la relation.
Conclusion
$model->relation() renvoie l'objet de relation lui-même, permettant des personnalisations supplémentaires des requêtes.-
$model->relation récupère directement les résultats de la requête, fournissant ainsi un raccourci pratique.-
Comprendre cette différence est essentiel pour une utilisation efficace d'Eloquent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!