0

我有一个这样定义的自引用表:-

public $hasMany = array(
    'ChildCategory' => array(
        'className' => 'Category',
        'foreignKey' => 'parent_category_id',
        'dependent' => false,
        'conditions' => '',
        'fields' => '',
        'order' => '',
        'limit' => '',
        'offset' => '',
        'exclusive' => '',
        'finderQuery' => '',
        'counterQuery' => ''
    )
);

public $belongsTo = array(
    'ParentCategory' => array(
        'className' => 'Category',
        'foreignKey' => 'parent_category_id',
        'conditions' => array('ParentCategory.parent_category_id' => '0'),
        'fields' => '',
        'order' => ''
    )
);

我们只有一级父子,所以一棵树有点难。我正在尝试对查找进行编码以获取仅用于添加编辑功能的父母列表。

    $parentCategories = $this->Category->ParentCategory->find('list');

但是sql不包含我的条件???

选择ParentCategoryid, ParentCategory. namebidupcategories1 ParentCategory= 1

是否有理由不包括该条件?

4

1 回答 1

1

关系的条件$belongsTo仅适用于从 Category 的查询中检索 ParentCategory(假设您显示的关系仅在 Category 模型中)。

这意味着如果您find()对 Category 进行了操作并通过recursiveorcontain参数包含 ParentCategory,或者可能使用read()了该条件,则将使用该条件。

当您直接在 ParentCategory 上查询模型中的条件被绕过时,您只是使用该关系作为获取该模型的捷径,而无需直接加载它或将其放入您的$uses.

正如 user2076809 所建议的那样,如果您特别想在 ParentCategory 上使用列表,那么您最好的选择可能是自己包含条件:

$parentCategories = $this->Category->ParentCategory->find(
  'list',
  array(
    'conditions' => array('ParentCategory.parent_category_id' => 0),
  )
);
于 2013-08-27T19:21:42.383 回答