Использовать данные родительской модели в другой модели с помощью contains () и условий в CakePHP - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть оператор содержимого, который выглядит следующим образом:

    $this->Wijken->contain(array(
        'Theme' => array(
            'Polygon' => array(
                'PolygonPoint'
            )
        )
    ));

Таблица Polygon имеет (среди прочего) поля 'theme_id' и 'wijk_id' (который является первичным ключом Wijken).

Мне нужно только выбрать полигоны, совпадающие с wijk_id.

Так что в моей голове это можно было бы сделать, добавив в массив Polygon следующее:

'conditions' => array('wijk_id' => $this->Wijken.id)

Однако это не работает. Когда я жестко кодирую значение 1, оно работает, и я получаю только многоугольники для wijk # 1.

Итак, мой вопрос; Как можно использовать переменную модели родителя (Wijken) в переменной условий другой модели (Polygon). Или я должен добавить специальные правила для моих моделей?

1 Ответ

0 голосов
/ 22 апреля 2011

Передавайте настройки содержимого при вызове функции find ()Это позволит вам динамически передавать идентификатор Wijken.т.е.:

function view($id) {
    // assuming $id param is a wijken id
    $contain = array(
        'Theme' => array(
            'Polygon' => array(
                'conditions' => array('Polygon.wijk_id' => $id),
                'PolygonPoint'
            )
        )
    );
    $conditions = array('Wijken.id' => $id);
    $wijken = $this->Wijken->find('first', array('contain'=>$contain, 'conditions'=>$conditions));
}
...