不起作用的代码: ( where(['category_id' => $item['id']]) 没起作用 ) 传递参数
$model->where('product_name', 'like', "%$productName%") 不起作用
public function cateProductPage()
{
$builder = new Builder(new CategoryModel());
$builder->setDefaultSort('sort,ASC');
$builder->setFilter(['pid' => -1]);
$lists = $builder->selectQuery(function (BaseQuery $query) {
})->select();
$productName = $this->request->post('product_name', '');
$model = new ProductModel();
if ($lists->toArray()) {
foreach ($lists as &$value) {
// 二级分类 名
$value['c_names'] = (new CategoryModel())->where(['pid' => $value['id']])->field('id,name')->select();
// 二级分类商品
foreach ( $value['c_names'] as &$item){
$item['good'] = $model->where(['category_id' => $item['id']]);
if (!empty($productName)) {
$model->where('product_name', 'like', "%$productName%")->select();
}
$item['good'] = $model->select();
// 提取标签中的 ‘约500g/份 约10-20 只' 约的展示 与 标签不展示在一起了
foreach ($item['good'] as &$index) {
$pattern = '/约[^,]*/';
preg_match_all($pattern, implode(', ',$index['tags']), $matches);
$index['tag'] = explode(',', implode(",", $matches[0]));
}
}
$where = [];
$user = $this->request->getUser();
if ($user) {
$where[] = ['is_view', 'find in set', $user['user_type']];
}
$pro = (new ProductModel())->with(['sku', 'ranks', 'category'])->whereRaw('concat(\' \',category_id,\' \') like "% ' . $value['id'] . ' %"')->where('status', '10')->where($where)->order([
'sort' => 'ASC',
'id' => 'DESC',
])->select();
$value['product'] = $pro;
}
unset($value);
unset($item);
unset($index);
}
return $lists;
}
日志:
起作用的代码:
public function cateProductPage()
{
$builder = new Builder(new CategoryModel());
$builder->setDefaultSort('sort,ASC');
$builder->setFilter(['pid' => -1]);
$lists = $builder->selectQuery(function (BaseQuery $query) {
})->select();
$productName = $this->request->post('product_name', '');
$model = new ProductModel();
if ($lists->toArray()) {
foreach ($lists as &$value) {
// 二级分类 名
$value['c_names'] = (new CategoryModel())->where(['pid' => $value['id']])->field('id,name')->select();
// 二级分类商品
foreach ( $value['c_names'] as &$item){
$item['good'] = $model->where(['category_id' => $item['id']])->where(function ($query) use($productName) {
if(!empty($productName)){
$query->where('product_name', 'like', "%$productName%");
}
})->select();
// 提取标签中的 ‘约500g/份 约10-20 只' 约的展示 与 标签不展示在一起了
foreach ($item['good'] as &$index) {
$pattern = '/约[^,]*/';
preg_match_all($pattern, implode(', ',$index['tags']), $matches);
$index['tag'] = explode(',', implode(",", $matches[0]));
}
}
$where = [];
$user = $this->request->getUser();
if ($user) {
$where[] = ['is_view', 'find in set', $user['user_type']];
}
$pro = (new ProductModel())->with(['sku', 'ranks', 'category'])->whereRaw('concat(\' \',category_id,\' \') like "% ' . $value['id'] . ' %"')->where('status', '10')->where($where)->order([
'sort' => 'ASC',
'id' => 'DESC',
])->select();
$value['product'] = $pro;
}
unset($value);
unset($item);
unset($index);
}
return $lists;
}
日志:



















