2012-02-10 3 views
1

This мои модели:CakePHP модель связывания неполадок Query

User hasmany Photos 

Photo belongto User 

Очень просто один ко многим отношений.

В контроллере я хотел бы видеть все фотографии одного пользователя.

$this->User->id = $id 
$this->User->Photos->read() 

Это не работает, и я знаю, что если я использую

$cond=array(
    'conditions' => array('UserId =' => $id), 
    'recursive' => -1 
    ); 
$relationsFrom = $this->User->Photos->find('all', $cond); 

Могу ли я сделать этот запрос без использования найти с условиями? Я даю внешний ключ, когда я связывал модели. Зачем мне писать? Я помню, что в Ruby on Rails User.Photos дают мне все фотографии пользователя.

Благодаря

+0

Вы уверены, что правильно вставили код? Это должно быть фото не фотографии, а User.id not UserId –

+0

Я боюсь, что это так, как работает торт. Тем не менее, я хотел бы получить объяснение для шаблона. – Joni

+0

Я работаю со старым db, я не могу изменить имя таблиц и полей. Кстати, с Containable более менее я нашел хороший способ решения проблемы. – Giacom0

ответ

1

Почему бы вам не использовать Containable поведение? Он будет выбирать соответствующие модели для вас так, как вы хотите. Он подберет соответствующие поля на основе ваших отношений

+0

спасибо, человек, это работает меньше. Я должен сделать 2 запроса один для моего пользователя и один для пользователей. Первое бесполезно. – Giacom0

+0

Добро пожаловать. –

0

Я могу вам сказать, почему это работает так, но не то, почему он был разработан работать так:

Объект $this->User->Photos является экземпляром Photo модели класс, который не имеет специальной ссылки на модель User, которая ссылается на нее. Вы можете использовать $this->User->Photos так же, как вы могли бы использовать new Photo.

Слой базы данных CakePHP вращается вокруг методов, которые обрабатывают запросы, закодированные как массивы, преобразуют их в SQL и возвращают результат в виде массивов данных. Он не создает объект запроса, как это делают некоторые ORM.