Некоторое время я боролся с этим поиском ().Для справки о таблицах см. Вопрос здесь: CakePHP Твиттер-клон: не удается заставить работать систему слежения .
Однако, короче говоря, это для клона Твиттера Iделаю для самообучения.У меня есть три стола.
Users (id, name)
Tweets (id, user_id, content, date)
UserUsers (id, user_id, follower_user_id)
В качестве моделей у меня есть пользователи, твиты и подписчики (пользователи HABTM).
Сейчас у меня есть запрос на поиск:
$this->User->bindModel(array('hasOne' => array('UserUsers')));
$fields = array('User.username');
$conditions = array(
'UserUsers.user_id'=> $current_id);
$contain = $this->User->contain(array(
'UserUsers',
'Tweet' => array(
'fields'=> array('Tweet.content', 'Tweet.date'),
'order' => 'Tweet.date DESC',
'limit' => 1)));
$data = $this->User->find('all', compact('fields', 'conditions', 'contain'));
, которыйпроизводит этот оператор SQL, который почти то, что я хочу:
SELECT `User`.`username`, `User`.`id` FROM `users` AS `User` LEFT JOIN `user_users` AS `UserUsers` ON (`UserUsers`.`user_id` = `User`.`id`) WHERE `UserUsers`.`user_id` = 1
Это очень близко, но он возвращает неправильный столбец в моей таблице.Я хотел бы привести следующий оператор SQL:
SELECT `User`.`username`, `User`.`id` FROM `users` AS `User` LEFT JOIN `user_users` AS `UserUsers` ON (`UserUsers`.`follower_user_id` = `User`.`id`) WHERE `UserUsers`.`user_id` = 1
Любая помощь в настройке моего запроса find () будет принята с благодарностью!Спасибо!