Модель Cakephp, связывающая проблемы запросов - PullRequest
1 голос
/ 10 февраля 2012

Это мои модели:

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);

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

Спасибо

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

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

0 голосов
/ 10 февраля 2012

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

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

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

...