Vérification de l'existence de modèles associés dans Laravel
Dans Laravel, les modèles Eloquent représentent des entités de base de données et fournissent des méthodes pratiques pour gérer les relations entre ces entités. Cependant, lorsque vous travaillez avec des relations, il peut être nécessaire de vérifier si un modèle associé existe avant d'effectuer d'autres opérations.
Considérez le code suivant :
<code class="php">public function option() { return $this->hasOne('RepairOption', 'repair_item_id'); } public function setOptionArrayAttribute($values) { $this->option->update($values); }</code>
Dans ce scénario, nous avons un modèle qui a une relation biunivoque avec un autre modèle. Lors de la création ou de la mise à jour de ce modèle, nous devons déterminer si le modèle associé existe pour décider de le mettre à jour ou de le créer.
Solution 1 (Laravel 7.2) :
Dans Laravel 7.2 et versions ultérieures, vous pouvez utiliser la méthode exist() sur l'objet relation pour vérifier si le modèle associé existe :
<code class="php">$model = RepairItem::find($id); if (Input::has('option')) { if ($model->option()->exists()) { // Option exists, update it } else { // Option does not exist, create it } }</code>
Solution 2 (pré-Laravel 7.2) :
Dans les versions de Laravel antérieures à 7.2, vous pouvez utiliser la méthode count() sur l'objet relation pour vérifier si le modèle associé existe :
<code class="php">if (count($model->option)) { // Option exists } else { // Option does not exist }</code>
Remarque : Cette méthode ne fonctionne que si la relation est une relation à valeur unique (par exemple, hasOne, appartientTo). Pour les relations plusieurs-à-plusieurs ou autres basées sur une collection, vous pouvez utiliser des méthodes telles que count() ou isNotEmpty() sur la collection de la relation pour vérifier si elle contient des modèles associés.
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!