У меня есть вопрос относительно ассоциации моделей. Рассмотрим следующее приложение: каждый месяц пользователю задают новый вопрос. Они имеют возможность дать отзыв по этому вопросу, и у других пользователей есть возможность реагировать на этот отзыв. Моя модель-установка выглядит так:Cake PHP, соединяющий ту же модель на двух таблицах
Users hasMany Tips, Reactions
Tips belongsTo User
Tips hasMany Reactions
Reactions belongsTo User, Tip
Теперь я хочу, чтобы получить все советы по этому вопросу от всех пользователей. Я просто нахожу все на подсказках, которые возвращают мне все советы, связанные с их пользователями и реакциями. Однако реакции не содержат пользователя, что очень важно, очевидно.
Торт автоматически преобразует мои поисковые запросы в два запроса: один в таблице подсказок, соединяющий пользователя и один в таблице реакций, но нет никакого соединения в таблице users, и это то, что мне нужно.
Итак, мой вопрос: почему таблица пользователей не связана с реакциями и как я могу это решить?
Код:
User-модель:
public $hasMany = array('Tip', 'Reaction');
Tip-модель:
public $hasMany = array('Reaction' => array(
'foreignKey' => 'tip_id'
));
public $hasOne = array('User' => array(
'fields' => array(
'User.id, User.first_name, User.last_name'
),
'foreignKey' => 'id'
));
Reaction-модель:
public $belongsTo = array('Tip', 'ReactionUser' => array(
'className' => 'User',
'foreignKey' => 'id'
));
Контроллер:
$tips = $this->Tip->find('all');
ВЫВОД:
array(
(int) 0 => array(
'Tip' => array(
'id' => '1',
'user_id' => '1',
'question_id' => '1',
'tip' => 'Testing da new datavbase',
'votes' => '0',
'approved' => '1',
'pic' => '',
'created' => '2012-05-18 09:22:56'
),
'User' => array(
'id' => '1',
'first_name' => 'Bart',
'last_name' => 'De Bock'
),
'Reaction' => array(
(int) 0 => array(
'id' => '1',
'tip_id' => '1',
'user_id' => '1',
'reaction' => 'lorem ipsum',
'votes' => '0',
'approved' => '1',
'pic' => '',
'created' => '0000-00-00 00:00:00'
)
)
),
(int) 1 => array(
'Tip' => array(
'id' => '2',
'user_id' => '2',
'question_id' => '1',
'tip' => 'Test',
'votes' => '0',
'approved' => '1',
'pic' => '',
'created' => '2012-05-18 10:22:51'
),
'User' => array(
'id' => '2',
'first_name' => 'Deborah',
'last_name' => 'Rochtus'
),
'Reaction' => array(
(int) 0 => array(
'id' => '2',
'tip_id' => '2',
'user_id' => '3',
'reaction' => 'Say whaat?',
'votes' => '2',
'approved' => '1',
'pic' => '',
'created' => '2012-05-18 10:33:32'
),
(int) 1 => array(
'id' => '3',
'tip_id' => '2',
'user_id' => '4',
'reaction' => 'Hmmm..',
'votes' => '0',
'approved' => '1',
'pic' => '',
'created' => '2012-05-18 10:33:44'
)
)
)
)
Как вы можете видеть, эти реакции не содержат соответствующий пользователь ...
Спасибо за вашу помощь!
показать мне свой код ,, что у вас пробовали ?? –
, пожалуйста, покажите мне ваш полный код контроллера .... ур модальный выглядит хорошо .. –
Сделано, обновлено выше – baRToooo