0

感觉就像我已经尝试了一切。我正在从 2 个数据表“规范”和“更新”构建各种新闻源。这是 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');

当然,这不是我想要的。

非常感谢任何帮助或方向。

4

1 回答 1

0

paginate()函数不允许多个模型作为参数,因为它实际上只是该find()函数的代理(请参阅文档)。您的第二个参数 ( 'Update') 将被视为find()调用的条件 - 这会导致 SQL 错误。

您将需要在一个find()模型上创建一个调用,它会返回您想要的所有数据。您可以使用模型关系和可能的 ContainableBehavior 包含来自其他模型的数据。

另一种方法是两种不同find()的操作并手动组合结果。但是您还必须手动处理分页。

于 2012-07-11T16:25:07.660 回答