0

古いケーキ以外のアプリと奇妙に構築されたデータベーステーブルからデータをインポートする必要があるため、表示が許可されているレコードの配列をパジネートする必要があります-これは可能ですか?

通常、データを適切な関係などに再編成しますが、時間スケールなどのため、これは不可能です。

詳細情報を提供するために、ユーザーテーブルに、表示が許可されているドキュメントに関連するIDのリストを含むフィールドがあります。フィールドには次のようなものが含まれます

123,23,45,56,765,122,11.9,71,25

各IDは、ドキュメントモデルのドキュメントを参照します。通常、適切なACOとAROを作成し、ACL / Authコンポーネントに、どのユーザーが何にアクセスできるかを処理させることを知っていますが、今回はこれはオプションではありません。それで、私がpaginate / findを介してそれを行うことができれば、それはオプションかもしれないと思いましたか?

どんな助けでも本当にありがたいです。

前もって感謝します

4

1 に答える 1

1

IDのリストを渡すのではなく、次のようなページネーション条件でIDを使用します。

(コードは頭から離れて書かれているので、構文エラーはご容赦ください...など。少なくとも正しいアイデア/パスが得られるはずです):

//Controller
$this->loadModel('User');
$this->loadModel('Document');

$user = $this->User->findById($userId);

$documentIds = explode(',', $user['User']['doc_ids']);

$this->paginate = array(
    'conditions' => array(
        'id' => $documentIds
    )
));
$documents = $this->paginate('Document');

配列を条件(例'id'=>$arrayOfIds)として渡すと、MySQLの「IN」が使用されます。次のようになります。

... WHERE id IN (45, 92, 173)
于 2012-11-09T15:42:58.440 に答える