感觉就像我尝试了一切。我正在从2个数据表'Spec'和'Update'构建各种新闻源。这是CakePHP代码。
// Setup pagination
$this->paginate = array(
'Spec' => array(
'fields' => array(
'Spec.id',
'Spec.name'
),
'limit' => 10,
'conditions' => array(
'Spec.car_id' => $id
),
'order' => array(
'Spec.created' => $orderSetting
)
),
'Update' => array(
'fields' => array(
'Update.id',
'Update.name'
),
'limit' => 10,
'conditions' => array(
'Update.car_id' => $id
),
'order' => array(
'Update.created' => $orderSetting
)
)
);
$updates = $this->paginate(array('Spec', 'Update'));
这是返回SQL错误。
SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Update' at line 1
问题在于这一行 - 它只允许一个项目? $ updates = $ this-> paginate(array('Spec','Update')); 例如。 $ updates = $ this-> paginate('Spec');
当然,这不是我想要的。
非常感谢任何帮助或指导。
答案 0 :(得分:0)
paginate()
函数不允许多个模型作为参数,因为它实际上只是find()
函数(see docs)的代理。您的第二个参数('Update'
)将被视为find()
调用的条件 - 这会导致SQL错误。
您需要在一个模型上创建一个find()
调用,该模型会返回您想要的所有数据。您可以使用模型关系以及可能的ContainableBehavior包含来自其他模型的数据。
另一种方法是两个不同的find()
操作并手动组合结果。但你也必须手动处理分页。