Vérifier si l'enregistrement existe dans CakePHP3
Dans CakePHP 2
j'ai toujours utilisé empty
pour vérifier si il y a aucun résultat.
<?php
$result = $this->Modelname->find('first', ['conditions' => ['field' => 'value'] ] );
if ( empty($result) ) {
//Bad Request
}
Dans CakePHP 3
il semble bizarre pour moi.
$fancyTable = TableRegistry::get('FancyTable');
$query = $fancyTable->find()->where(['name' => 'fancy', 'active' => 0]);
if ( 0 === $query->count() ) {
//Bad Request
}
Est-ce la bonne manière?
- Vous pouvez utiliser la fonction isEmpty() maintenant, a ajouté dans CakePHP 3.0.4 ... voir question similaire
Vous devez vous connecter pour publier un commentaire.
Que vous pouvez faire:
TableRegistry::get()
a été désapprouvée. Au lieu de cela, utiliser:TableRegistry::getTableLocator()->get($table);
$exists = $tableName->exists([condition]);
Utiliser quelque chose comme ceci:
first()
, il ne fonctionne pas (du moins pas dans le dernier Gâteau). Auquel cas, si vous avez toujours voulu seulement un enregistrement retourné, vous pouvez simplement ajouter->limit()
, et continuer à utiliser cette approche.first()
est vide, ou existe, est-il vérifier si le résultat est null ou pas. Cela fonctionne mieux quelimit(1)
dans ce cas,limit
renvoie une collection.