我正在使用CakePHP 3.2。我有两个表categories
和subcategories
,其中subcategories
与categories
与外键category_id
相关联。
我必须使用这两个表构建下拉导航。所以它看起来像这样
-Menu
|- Category_1
|- Category_1_subcategory_1
|- Category_1_subcategory_2
|- Category_1_subcategory_3
|- Category_2
|- Category_2_subcategory_1
|- Category_2_subcategory_2
|- etc
为此,这就是我所做的。
在AppController.php
// set navigation menu
$this->loadModel('Categories');
$menu_categories = $this->Categories->find('all', [
'contain' => ['Subcategories'],
]);
$this->set('menu_categories', $menu_categories);
然后在navigation.ctp
$foreach($menu_categories as $menu_category):
echo $menu_category->title;
foreach($menu_category->Subcategories as $subcategory):
echo $subcategory->title;
endforeach;
endforeach;
但这仅打印category->title
而不是subcategories
我必须在每个所属类别下打印子类别。
答案 0 :(得分:1)
您的navigation.ctp片段中有一个拼写错误
echo $menu_cateory->title;
此外,请确保您已在类别中正确设置$containedModels
,以及您在类别和子类别中正确设置hasMany
和belongsTo
关联,以及您已正确包含Containable
行为。
答案 1 :(得分:0)
确保在模型中定义关联。
类别模型:
$this->hasMany(
'Subcategory', [
'className' => 'Subcategory',
'foreignKey' => 'category_id'
]);
子类别模型:
$this->belongsTo(
'Category', [
'className' => 'Category',
'foreignKey' => 'category_id'
]);