Я начал писать проект, используя CakePHP (1.3), и мне трудно вернуть результаты, используя стиль запроса CakePHP.CakePHP 1.3 ассоциации
Проект является трекером проблем. Пока у меня есть только следующие таблицы: «пользователи», «проекты» и «таблицы ссылок», так как любые пользователи могут быть связаны с одним или несколькими проектами. Существует также таблица «статусы», связанная с таблицей проектов.
Я создал ассоциации в моделях.
Я пытаюсь вернуть итоговую страницу для тех, кто вошел в систему, отображая имя проекта, статус проекта, отфильтрованный зарегистрированным в user_id
. Если бы я сделал это в SQL, тогда я сделал бы что-то вроде следующего.
SELECT
`statuses`.name,
`projects`.name
FROM
`statuses`
INNER JOIN `projects` ON (`statuses`.id = `projects`.status_id)
INNER JOIN `projects_users` ON (`projects`.id = `projects_users`.project_id)
INNER JOIN `users` ON (`projects_users`.user_id = `users`.id)
WHERE
`users`.id = 1
$this->Project->find('all'))
возвращает все проектов, подробности о состоянии и пользователей.
Array
(
[0] => Array
(
[Project] => Array
(
[id] => 1
[name] => Project 1
[status_id] => 2
[date_created] => 0000-00-00
)
[Status] => Array
(
[id] => 2
[name] => Live
)
[User] => Array
(
[0] => Array
(
[id] => 1
[username] => d
[password] => ********************************
[role] => master
[ProjectsUser] => Array
(
[id] => 1
[project_id] => 1
[user_id] => 1
)
)
)
)
Etc..
Я также попытался
$this->Project->find('all', array('conditions'=>array('User.id' => $this->Session->read('Auth.User.id'))))
который возвращает ошибку:
Unknown column 'User.id' in 'where clause'
Если я пытаюсь
$this->Project->User->find('all', array('conditions'=>array('User.id' => $this->Session->read('Auth.User.id'))))
он правильно возвращает все проекты, связанные с user_id, но теперь я уже не г заменяя значение статуса, только id.
Array
(
[0] => Array
(
[User] => Array
(
[id] => 1
[username] => d
[password] => ********************************
[role] => master
)
[Project] => Array
(
[0] => Array
(
[id] => 1
[name] => Project 1
[status_id] => 2
[date_created] => 0000-00-00
[ProjectsUser] => Array
(
[id] => 1
[project_id] => 1
[user_id] => 1
)
)
[1] => Array
(
[id] => 3
[name] => Project 3
[status_id] => 1
[date_created] => 0000-00-00
[ProjectsUser] => Array
(
[id] => 2
[project_id] => 3
[user_id] => 1
)
)
)
)
)
Есть ли способ легко вернуть то, что я после «CakePHP»? Я уверен, что я пропустил что-то очевидное здесь.
$ this-> Project-> find ('all', array ('conditions' => array ('Users.id' => $ this-> Session-> read ('Auth. User.id ')))) все еще дает ошибку. Я считаю, что торт требует «пользователя», а не пользователя, потому что я фильтрую одного пользователя. Другой запрос, который имеет «пользователь», также работает? – Dave