带有包含/连接和条件的自定义分页

发布于 2024-10-18 21:00:37 字数 236 浏览 1 评论 0原文

我正在尝试根据间接相关模型的特定条件对称为 D 的模型过滤结果中的一些数据进行分页。我的模型看起来像:

D->C->B->A (其中每个 -> 都是 a 所属)

我想对 D 的记录进行分页,其中 A.client = ?

使用containable可以做到这一点吗?执行此操作的首选方法是什么(使用模型 D 中的 containsable 导致对每个分页项进行查询,这似乎效率低下)?

I am trying to paginate some data from a model called D filtering results based on a specific condition from an indirectly related model. My models look like:

D->C->B->A (where each -> is a belongs to)

I want to paginate on the records of D where A.client = ?

Is this possible using containable? What is the preferred method of doing this (using containable from model D resulted in a query for each paginated item, which seems inefficient)?

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

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

发布评论

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

评论(1

可可 2024-10-25 21:00:37

是的,使用 Containable 可能有效;例如,

// function in AController

$this->paginate = array(
    'conditions' => array('A.client' => 'foo'),
    'contain' => array(
        'B' => array(
            'C' => array(
                'D'
            )
        )
    )
);

CakePHP 将连接 A 到 B、B 到 C、C 到 D。我认为这可能是获取 4 个模型之外的数据的最直接的方法。至于效率低下,您可以将 sql_dump 元素与“explain plan”结合使用,以确保您的查询正确使用索引。

Yes, using Containable probably works; e.g.

// function in AController

$this->paginate = array(
    'conditions' => array('A.client' => 'foo'),
    'contain' => array(
        'B' => array(
            'C' => array(
                'D'
            )
        )
    )
);

CakePHP will join A to B, B to C, and C to D. I think it's probably the most straightforward way to get data that is 4 models away. As for inefficiency, you can use the sql_dump element in conjunction with 'explain plan' to make sure that your query uses indexes appropriately.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文