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' => ''
    )
);

親子のレベルは 1 つしかないため、ツリーは少しオットです。編集機能を追加するためだけに親のリストを取得するように検索をコーディングしようとしています。

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

しかし、SQLには私の条件が含まれていませんか???

選択しParentCategoryます。idParentCategorynameからbidupcategoriesAS ParentCategoryWHERE 1 = 1

条件が含まれていない理由はありますか?

4

1 に答える 1

1

関係の条件は、$belongsToCategory のクエリから ParentCategory を取得する場合にのみ適用されます (表示する関係が単に Category モデルにあると仮定します)。

これは、on Category を実行し、またはパラメータfind()を介して ParentCategory を含めた場合、またはおそらく使用された場合、その条件が使用されることを意味します。recursivecontainread()

モデルの条件がバイパスされる ParentCategory で直接クエリを実行すると、その関係を直接ロードしたり、$uses.

user2076809 が示唆したように、特に ParentCategory でリストを使用したい場合、最良のオプションは自分で条件を含める可能性があります。

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