0

由于不得不从旧的非蛋糕应用程序和奇怪地构建的数据库表中导入数据,我需要传递允许显示的记录数组的分页 - 这可能吗?

通常我会将数据重新组织成适当的关系等,但由于时间尺度等原因,这是不可能的。

为您提供更多信息 - 在我的用户表中,我有一个字段,其中包含与允许查看的文档相关的 ID 列表。该字段将包含类似

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

每个 ID 指的是文档模型。我知道通常您会创建适当的 ACO 和 ARO,并让 ACL/Auth 组件处理哪些用户可以访问哪些内容,但这一次不是一个选项。所以我想如果我可以通过分页/查找来做到这一点,它可能是一个选择吗?

任何帮助将非常感激。

提前致谢

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 回答