首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在CakePHP中如何使可控制行为与树行为协同

在CakePHP中如何使可控制行为与树行为协同
EN

Stack Overflow用户
提问于 2015-01-15 11:13:37
回答 1查看 443关注 0票数 0

我有一个可控制的问题,就是我的类别模型表现得像一棵树:

代码语言:javascript
运行
复制
class Category extends AppModel {
  public $actsAs = ['Tree', 'Containable'];

  public $hasMany = [
    'Novelty' => [
      'className' => 'Novelty',
      'foreignKey' => 'category_id',
      'dependent' => false,
    ]
  ]
}

其结构:

代码语言:javascript
运行
复制
Category(
  id int(11)
  name varchar(255)
  parent_id int(11)
  lft int(11)
  rght int(11)
)

我有一个新奇的模特:

代码语言:javascript
运行
复制
class Novelty extends AppModel {
  public $actsAs = ['Containable'];

  public $belongsTo = [
    'Category' => [
      'className' => 'Category',
      'foreignKey' => 'category_id',
    ]
  ];
}

新颖结构:

代码语言:javascript
运行
复制
Novelty(
  id int(11)
  name varchar(255)
  category_id int(11)
)

联想

代码语言:javascript
运行
复制
Category -> hasMany -> Novlety
Novelty -> belongsTo -> Category

来自find('threaded')的类别示例结构如下所示:

代码语言:javascript
运行
复制
['Category'] => [
  'id' => 13
  'name' => 'Main'
  'lft' => 88
  'rght' => 105
  'children' => [
    [0] => [
      ['Category'] => [
        'id' => 131
        'name' => 'sub1'
        'lft' => 89
        'rght' => 90
      ]
    ]
    [1] => [
      ['Category'] => [
        'id' => 132
        'name' => 'sub2'
        'lft' => 91
        'rght' => 92
      ]
    ]
    [...]
  ]
]

现在当我尝试可控制的时候:

代码语言:javascript
运行
复制
$this->Category->contain(
  'Novelty' => [
    'conditions' => [
      'AND' => [
        'Novelty.category_id >=' => 13,
        'Novelty.category_id !=' => 14
      ]
    ]
  ]
);

现在,当我运行Category->find('all')时,没有任何新的结果。因为蛋糕添加了自己的条件Novelty.category = (13)。我既不能摆脱也不能扩大它。因此,查询如下:

代码语言:javascript
运行
复制
SELECT `Novelty`.`id`, `Novelty`.`name`, `Novelty`.`category_id`, 
FROM `databse`.`novelties` AS `Novelty` 
WHERE ((`Novelty`.`category_id` >= 13) 
  AND (`Novelty`.`category_id` < 14)) 
  AND `Novelty`.`category_id` = (13)

是否有修改默认查询条件的特殊条件?

我的目标:

要获得与子类别相关的新特性,不仅要获取与主类别相关的类,还可以获取与子类别相关的新特性。但这有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-15 13:18:38

现在,当我运行there >find(‘all’)时,结果是没有新的。因为蛋糕添加了自己的条件Novelty.category = (13)。我既不能摆脱也不能扩大它。因此,查询如下:

这是代码的正确行为。您有一个Cateogry hasMany新颖性协会,为了实现这一点,Cake添加了条件。

在我看来,你似乎想找到所有新奇的记录,除了第14类,对吗?

临时unbindModel(),您的新颖性关联,并将其添加回hasOne assoc,没有外键,但有一个条件:

代码语言:javascript
运行
复制
['conditions' => ['Novelty.cateogry_id !=' 14]]

或者使用查询的联接数组

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27962129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档