Tentative de mise à jour de certaines lignes en fonction des données associées, en utilisant la correspondance. Mais seule la clause "where" fonctionne. Le "matching" est ignoré! Est-ce que je fais quelque chose de mal?Mise à jour de la requête en utilisant où et correspondant à Cakephp 3.X - est-ce possible?
$tbTU = TableRegistry::get('TaskUsers');
$query = $tbTU->query()
->where([
'TaskUsers.service_order_id' => $so_id,
'TaskUsers.status IN' => [0, 4, 7, 9],
])
->contain(['Tasks'])
->matching('Tasks', function($q) {
return $q->where([
'Tasks.task_type IN' => [1, 4, 5]
]);
});
return $query
->update()
->set([
'status' => 3,
'user_id' => NULL,
'modified' => Time::now()
])
->execute();
Merci!
Je pense que ce n'est pas possible. Quoi qu'il en soit quelles sont les relations entre vos modèles? Il semble que vous n'avez pas besoin d'une instruction correspondante si un 'TaskUser' appartient à Task ' – arilia
Oui, TaskUsers appartient à Tâches. Comment est-ce que je pourrais mettre à jour un TaskUser avec l'état 4 ou 7, qui appartient à une tâche avec un type de tâche 1 ou 5, sans utiliser la correspondance, par exemple? – npena