【问题标题】:Cakephp "joins" destroys conditions?Cakephp“加入”破坏条件?
【发布时间】:2010-10-25 17:31:53
【问题描述】:

一个错误有一个状态,并且有并且属于许多用户组。

现在,在列出错误时,我使用了分页助手,并让用户能够通过各种设置对其进行过滤。到目前为止效果很好。您可以按项目过滤它,您可以按状态(通过 bug 的 state_id 属性)和其他几个项目过滤它。现在我希望它被负责该错误的组过滤。

由于这是一个 HABTM 连接,我使用“连接”来连接表。

这就是我的 $this->paginate 的样子:

[limit] => 10
[contain] => Array
    (
        [0] => Project
        [1] => User
        [2] => Priority
        [3] => State
        [Comment] => Array
            (
                [0] => User
            )

        [4] => Screenshot
        [5] => Group
    )

[conditions] => Array
    (
        [Bug.project_id] => 26
        [Bug.state_id] => 1
    )

[Bug] => Array
    (
        [joins] => Array
            (
                [0] => Array
                    (
                        [table] => bugs_groups
                        [alias] => BugsGroups
                        [type] => inner
                        [conditions] => Array
                            (
                                [0] => BugsGroups.bug_id = Bug.id
                            )

                    )

                [1] => Array
                    (
                        [table] => groups
                        [alias] => Group
                        [type] => inner
                        [conditions] => Array
                            (
                                [0] => Group.id = BugsGroups.group_id
                                [Group.id] => 9
                            )

                    )

            )

    )

奇怪的是 - 当我使用 “加入”之前的条件(project_id,state_id)完全被忽略了?!这是蛋糕中的预期行为吗?我将如何规避它?

【问题讨论】:

  • 打开调试并输出你的 SQL 日志,看看它在后台做了什么。
  • 已经做到了——它完全按照我说的做——一旦我使用连接,它就会忽略“条件”部分中的任何内容。我只是不明白为什么。

标签: cakephp join model filter


【解决方案1】:

这些不应该:

[0] => BugsGroups.bug_id = Bug.id
[0] => Group.id = BugsGroups.group_id

看起来像:

[BugsGroups.bug_id] => Bug.id
[Group.id] => BugsGroups.group_id

?

【讨论】:

    【解决方案2】:

    同事找到了解决方案 - 将连接放在“Bug”键中是问题所在。将它上移一步($this->paginate['joins'] 而不是 $this->paginate['Bug']['joins'])使它工作得很好......

    【讨论】:

      猜你喜欢
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      • 2011-07-26
      • 2023-03-25
      相关资源
      最近更新 更多