CakePHP 使用与 HABTM 链接的另一个表上的条件对结果进行分页

发布于 2024-10-17 00:54:54 字数 336 浏览 11 评论 0原文

我已经进行了一些搜索,但找不到任何与我的场景足够相关/有效的内容。我有:

Jobs <--> HABTM (Users_jobs table) <--> Users

我想从我的 Job 控制器执行 paginate() ,并在 User.id 上设置一个条件,因为我确实需要从当前用户获取所有作业并对其进行分页。

如果您确实提供了另一个主题/网站的链接,请提供解释以及如何将其应用到我的案例中。

干杯,
尼古拉斯.

I've done some searching but I can't find anything relevant enough/working for my scenario. I've got:

Jobs <--> HABTM (Users_jobs table) <--> Users

I would like to do a paginate() from my Job controller with a condition on the User.id, as I do need to fetch -and paginate- all the jobs from the current user.

If you do provide a link to another topic/site, please provide an explanation with it and how you would apply it to my case.

Cheers,
Nicolas.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄人书 2024-10-24 00:54:54

确保您的 HABTM 关联设置正确(cake Baker 需要 jobs_users 的联接表,而不是 users_jobs(请参阅:Cakephp-HABTM) 如果是,请将下面示例中对 JobsUser 的引用更改为 UsersJob 以匹配你所描述的布局。

//In an action in jobs_controller.php

//Fake a HasOne association to the JobsUser model, setting $reset to false
$this->Job->bindModel(array(
    'hasOne' => array(
        'JobsUser'
    )
), false);

//Setup the paginate conditions, grouping on job.id
//Set $user_id to the user to filter results by (can also be an array of users)
$options = array(
    'group' => 'Job.id',
    'conditions' => array(
        'JobsUser.user.id' => $user_id
    )
);
$this->paginate = $options;
$users = $this->paginate();

Make sure your HABTM associations are setup correctly (cake bake would expect a join table of jobs_users rather than users_jobs (see: Cakephp-HABTM) If they are, change the references to JobsUser in the example below to UsersJob to match the layout you described.

//In an action in jobs_controller.php

//Fake a HasOne association to the JobsUser model, setting $reset to false
$this->Job->bindModel(array(
    'hasOne' => array(
        'JobsUser'
    )
), false);

//Setup the paginate conditions, grouping on job.id
//Set $user_id to the user to filter results by (can also be an array of users)
$options = array(
    'group' => 'Job.id',
    'conditions' => array(
        'JobsUser.user.id' => $user_id
    )
);
$this->paginate = $options;
$users = $this->paginate();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文