Я видел похожие вопросы, но их ответы, похоже, не работают для меня.Кажется, это должно быть очень просто, поэтому я чувствую себя довольно глупо, спрашивая.
У меня есть модель под названием Preappform, в которой есть многие модели агентов (которые принадлежат для Preappform).Модель агента имеет поле, содержащее хэш.Когда я получаю Preappform, он автоматически возвращает мне любых агентов, связанных соответствующим внешним ключом, но я бы хотел ограничить этот список агентов только теми, чье поле Agent.hash соответствует указанному условию.
Вот текущий код:
models / agent.php
class Agent extends AppModel {
var $name = "Agent"; // Singular for instances.
var $belongsTo = array('Preappform');
}
models / preappform.php
class Preappform extends AppModel {
var $name = "Preappform";
var $hasMany = array('Agent');
/* snip, some validation stuff */
}
В контроллере ... (следуя примеру других)
// $id = 18
// $hash is set to false, or a nonexistent value.
$the_form = $this->Preappform->find('first',
array(
'conditions' => array('Preappform.id' => $id),
'contain' => array('Agent' => array('conditions' => array('Agent.hash' => $hash)))
)
);
Результат:
Arrray
(
[Preappform] => Array
(
[id] => 18
[created] => 2010-12-03 08:56:12
[modified] => 2010-12-03 08:56:12
[completed] => 0
/* ... */
)
[Agent] => Array
(
[0] => Array
(
[id] => 1
[preappform_id] => 18
[hash] => f312d4b401fecc8ce0f8dca6eb7c1ca6ad9f5956
)
[1] => Array
(
[id] => 2
[preappform_id] => 18
[hash] => f312d4b401fecc8ce0f8dca6eb7c1ca6ad9f5957
)
)
)
Я играл с различными версиями "contains" и разными значениями для "recursive" в PreappformМодель, но не может показаться фильтром доступных агентов.
Я думал, что это будет так же просто, как
$the_form = $this->Preappform->find(
'first',
array('conditions' => array(
'Preappform.id'=> $id,
'Agent.hash' => $hash
)
)
);
... но это всегда выдает ошибку "Неизвестный столбец: Агент ...".
Как можноЯ применяю условия для фильтрации агентов, возвращаемых с моей моделью Preappform?