分類されたリストでユーザーの食料品を見つけようとしています。関連付けは、カテゴリ hasMany Item hasMany User から Grocery です。Containable Behavior を使用していますが、他のすべての食料品を除外していません。基本的には一品ごとに返品します。
私のコントローラー機能:
function showlist() {
$categories = $this->Category->find('all', array(
'contain' => array(
'Item' => array(
'Grocery' => array(
'conditions' => array(
'Grocery.user_id =' => $this->Auth->user('id')
)
)
)
)
));
返される配列:
Array
(
[0] => Array
(
[Category] => Array
(
[id] => 10
[parent_id] =>
[name] => Dairy
[lft] => 1
[rght] => 6
)
[Item] => Array
(
)
)
[1] => Array
(
[Category] => Array
(
[id] => 11
[parent_id] => 10
[name] => Milk
[lft] => 2
[rght] => 3
)
**[Item] => Array
(
)**
)
[2] => Array
(
[Category] => Array
(
[id] => 12
[parent_id] => 10
[name] => Cheese
[lft] => 4
[rght] => 5
)
[Item] => Array
(
)
)
[3] => Array
その下に Grocery(ItemUser) がない Item 配列を返したくありません。
これは機能しますが、今ではフラットにしか表示されません。そのネストされた配列内の 1 つのカテゴリのすべてのアイテムを表示する必要があります。
それは示しています:
Array
(
[0] => Array
(
[Category] => Array **<--This could be the same category as**
(...)
[Item] => Array
(...)
[Grocery] => Array
(...)
)
[1] => Array
(
[Category] => Array **<--This**
(...)
[Item] => Array
(...)
[Grocery] => Array
(...)
)
[2]...
そして、私はそれが必要です:
Array
(
[0] => Array
(
[Category] => Array
(...
[Item] => Array
(...)
[Item] => Array
(...)
)
)
[1] => Array
(
[Category] => Array
(...)
[Item] => Array
(...)
)
[2]...
Grocery 配列は実際には必要ありません。条件を検索するだけです。