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

問題はこの行です - 1 つのアイテムしか許可されませんか? $updates = $this->paginate(array('Spec', 'Update')); 例えば。$updates = $this->paginate('Spec');

もちろん、これは私が探しているものではありません。

どんな助けや指示も大歓迎です。

4

1 に答える 1

0

関数は、実際には関数paginate()へのプロキシにすぎないため、複数のモデルをパラメーターとして許可しません( docs を参照)。2 番目のパラメーター ( ) は呼び出しの条件として扱われ、SQL エラーが発生します。find()'Update'find()

必要なすべてのデータを返す1 つのfind()モデルで呼び出しを作成する必要があります。モデル リレーションと、場合によっては ContainableBehavior を使用して、他のモデルからのデータを含めることができます。

もう 1 つの方法は、2 つの異なるfind()操作を行い、結果を手動で結合することです。ただし、ページネーションも手動で処理する必要があります。

于 2012-07-11T16:25:07.660 に答える