CakePHP: получение данных hasAndBelongsToMany для пользователя - PullRequest
0 голосов
/ 01 февраля 2011

Я хочу вернуть данные, принадлежащие только 1 пользователю в отношении hasAndBelongsToMany. Я не уверен насчет условий здесь: Я получаю предупреждение:

Warning (512): SQL Error: 1054: Unknown column 'UsersFood.user_id' in 'where clause'

Может кто-нибудь уточнить с этим?

return $this->find('all', array('conditions' => array(
                'Food.id' => 'Usersfood.food_id',
                'Usersfood.user_id' => $userid,
                 'User.id' => $userid

                )

     )

   );

Ответы [ 4 ]

0 голосов
/ 01 февраля 2011

Решение найдено.Я буквально прочитал Containable и Join и решил пойти с Join.

А).http://book.cakephp.org/view/1047/Joining-tables

Также благодаря этому комментарию:

B).http://book.cakephp.org/comments/index/1325

0 голосов
/ 01 февраля 2011

убедитесь, что вы правильно определили отношение согласно этой странице http://book.cakephp.org/view/83/hasAndBelongsToMany-HABTM

Затем посмотрите на http://book.cakephp.org/view/474/Containable

конкретного пользователя с этой едой пользователей.

$this->find('first', array('conditions' => array('User.id' => 123), 'contain' => array('Food')));

или все с едой на пользователя

$this->find('all', array('contain' => array('Food')));

0 голосов
/ 01 февраля 2011

Разве это не должно быть FoodsUser , а не UsersFood ?

Если вы придерживаетесь соглашения, это из книги: «Имя этой новой таблицы соединений должно включать имена обеих задействованных моделей в алфавитном порядке и разделяться подчеркиванием (_) . "

Теперь подчеркивание для базы данных имя таблицы. В соответствии с соглашением, название модели будет FoodsUser

0 голосов
/ 01 февраля 2011
return $this->find('all', array('conditions' => array(
                 'User.id' => $userid
                )
     )

   );

Если вы установили $hasAndBelongsToMany, вам не нужно указывать 'Food.id' => 'Usersfood.food_id', и 'Usersfood.user_id' => $userid, `

...