У меня есть модель пользователя, которая имеет отношение hasOne к модели профиля. Я хочу найти пользователей, у которых нет профиля, связанного с ними. Я не знаю, работает ли counterCache для отношения hasOne или есть лучший способ с соответствующими условиями.
CakePHP находит элементы с отношением hasOne Model, у которых нет связанного элемента
Ответы (1)
Я считаю, что отношение hasOne
создает отношение LEFT JOIN
в операторе SQL. Возможно, сгенерированный SQL для вашей находки будет выглядеть примерно так (хотя предположим, что столбцов больше):
SELECT User.id, User.name, Profile.id
FROM users AS User
LEFT JOIN profiles AS Profile
ON Profile.user_id = User.id;
Все, что вам нужно сделать, это добавить еще одно предложение WHERE: WHERE Profile.id IS NULL
для несовпадающих строк. Таким образом, изменив код Cakephp на
$this->User->find('all',array(
'conditions' => array('Profile.id' => 'NULL')))
person
AgRizzo
schedule
23.11.2014
На самом деле я делал это с отношением hasMany, которое возвращало пустой массив вместо одного результата! «NULL» также может быть php null.
- person Mohsenme; 23.11.2014