Tu as le choix, soit tu fais une requête plus approfondie depuis le controller, ou alors tu fais un Finder personnalisé dans le model que tu appellera depuis la fonction du controller.
Par exemple pour le second cas :
$seuil = $this->Users->find('seuil')
->where(['Users.id' => $this->Auth->user('id')]);
if ($seuil):
$this->Flash->error('Vous avez dépassé le seuil autorisé');
endif;
Puis dans src/Model/Entity/User.php:
public function findSeuil(Query $query, array $options)
{
$query
->contain(['Depenses'])
->where(['Depenses.seuil >' => 5000]);
return $query;
}
De cette manière, si tu as un retour positif du finder personnalisé, c'est que l'utilisateur a dépassé le seuil autorisé et tu lui affiches le message.
Tu peux très bien te passer de la requête en get que j'ai mise plus haut si tu veux, c'était juste un code vite fait, pour éviter une requête supplémentaire dans le cas ou la première était nulle.
Oui, c'est Finder personnalisé et non Query Builder personnalisé comme j'ai mis dans mon post précédent.