想要在cakephp 3中获得子类别产品
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了想要在cakephp 3中获得子类别产品相关的知识,希望对你有一定的参考价值。
我有树结构和产品表的类别表。我想在列表上显示。当用户点击父类别时,我想要显示此类别的所有产品以及此类别的子类别的产品。
public function listing($catid = null, $slug = null)
{
$this->viewBuilder()->layout('frontview');
$this->loadModel('Categories');
$this->loadModel('Products');
$categoryid=$this->Categories->find('children',['for'=>$catid]);
$catarray=array();
foreach($categoryid as $c) {
$catarray[]=$c['categoryId'];
}
debug($catarray);
$products=$this->Products->find()
->where(function ($exp, $q) {
return $exp->in('categories_id',$catarray); //line 81
});
$this->set('products',$products);
}
$ catarray的调试是
[
(int) 0 => (int) 6,
(int) 1 => (int) 7,
(int) 2 => (int) 8,
(int) 3 => (int) 9,
(int) 4 => (int) 10,
(int) 5 => (int) 11,
(int) 6 => (int) 12
]
错误:注意(8):未定义的变量:catarray [APP / Controller CategoriesController.php,第81行] 错误:无法使用字段值的空列表生成条件(categories_id)
答案
正如Sevvlor所说,你必须这样做
function ($exp, $q) uses(catarray)
但您也可以简化您的代码:
$categoryid=$this->Categories->find('children',['for'=>$catid]);
$catarray = $categoryid->extract('categoryId');
$products=$this->Products->find()
->where(['category_id IN' => $catarray]);
以上是关于想要在cakephp 3中获得子类别产品的主要内容,如果未能解决你的问题,请参考以下文章
用于 WordPress 的 PHP 片段,用于获取所有产品子类别
在 hasMany 中依赖 true 不能在 cakephp4 中的子节点上工作