由于必须从旧的非蛋糕应用程序和奇怪构建的数据库表中导入数据,我需要对允许显示的记录数组进行分页-这可能吗?
通常,我会将数据重新组织成适当的关系等,但由于时间尺度等原因,这是不可能的。
为了给您提供更多信息-在我的用户表中,我有一个字段,其中包含与他们被允许查看的文档相关的ID列表。该字段将包含如下内容
123,23,45,56,765,122,11.9,71,25每个ID都指向文档模型中的一个文档。我知道通常您会创建适当的ACOs和AROs,并让ACL/Auth组件处理哪些用户可以访问哪些内容,但这不是一个选项。所以我想,如果我可以通过paginate/find来做这件事,可能会是一个选择?
任何帮助都将不胜感激。
提前感谢
发布于 2012-11-09 23:42:58
您不会将in列表传递给它,而是在分页条件中使用in如下所示。
(代码写在我的头上,所以请原谅任何语法errors...etc。它至少应该给你一个正确的想法/路径):
//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)https://stackoverflow.com/questions/13310589
复制相似问题