Я начал писать проект, используя CakePHP (1.3), и мне трудно возвращать результаты, используя стиль запросов CakePHP.
Проект отслеживает проблемы. Пока у меня есть только следующие таблицы - «пользователи», «проекты» и таблица ссылок «проекты_пользователи», потому что любые пользователи могут быть связаны с одним или несколькими проектами. Существует также таблица «статусов», связанная с таблицей проектов.
Я установил ассоциации в моделях.
Я пытаюсь вернуть сводную страницу для тех, кто вошел в систему, с отображением имени проекта, состояние проекта отфильтровано вошедшей в систему 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'))))
, который возвращает ошибку:
Неизвестный столбец 'User.id' в 'предложении where'
Если я попытаюсь
$this->Project->User->find('all', array('conditions'=>array('User.id' => $this->Session->read('Auth.User.id'))))
он корректно возвращает все проекты, связанные с user_id, но теперь я больше не возвращаю значение status, только идентификатор.
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"? Я уверен, что упускаю что-то очевидное здесь.