我有以下查找功能:
$this->MyModel->find('all', array('conditions' => array('id' => $id)));
返回此表单的数组
Array
(
[Model1] => Array
(
[Model1] => Array
(
...
...
)
)
[Model2] => Array
(
[0] => Array
(
...
...
)
[1] => Array
(
...
...
)
[2] => Array
(
...
...
)
...
...
...
)
)
如何更改find
all以限制获取第二个模型的元素数量(Model2
)?
我可以添加conditions => array( 'limit' => 10 )
但是这限制了外部数组的元素数量 - 而不是Model2,即第二个嵌套数组!
有什么想法吗?谢谢你:)。
答案 0 :(得分:2)
您应该在此处使用cake的containable行为来限制第二个模型的记录。以下是使用Contaable实现此目的的方法。
$this->Model->contain = array('Model2' => array('limit' => 10));
$this->Model->find('all', array('conditions' => $conditions));
现在,您将从Model2获得最多10条记录。
答案 1 :(得分:1)
如果您每次执行查找时都要执行此操作('all'),则可以在模型中的关联数组中使用'limit'参数:
public $hasMany = array(
'OtherModel' => array(
'className' => 'OtherModel',
'foreignKey' => 'model_id',
'limit' => 10
)
或者,您也可以在调用find()方法之前修改此值:
$this->MyModel->hasMany['OtherModel']['limit'] = 10;
$this->MyModel->find('all', array('conditions' => array('id' => $id)));