变量在范围循环内变空Octobercms

问题描述

我有 $slug 变量,它采用前端 url slug 值并将其发送到模型范围。在范围内,如果我使用 echo $slug 它可以工作,也可以在查询中工作(我用它来显示只有相同类别 slug 的产品)。

查询 $slug 在哪里工作:

return $query->orwhereHas('category',function($q) use ($slug){
  $q->where('slug','=',$slug);
})->paginate($perPage,$page);

这是sql

select * from `slasher_farming_mods` where exists (select * from `slasher_farming_categories` where `slasher_farming_mods`.`category_id` = `slasher_farming_categories`.`id` and `slug` = 'medium-tractors') limit 4 offset 0

可见的slug值是“中型拖拉机”。

如果我尝试在排序循环内或品牌循环内使用 $slug,它就会变成空

public function scopeListFrontEnd($query,$options = [],$slug = ''){
        extract(array_merge([
            'page' => 1,'perPage' => 4,'sort' => 'brandName desc','brands' => null,'categorySlug' => null,],$options));


    print $slug; //This works here

    if(!is_array($sort)) {
        $sort = [$sort];
    }


    foreach ($sort as $_sort){
        if(in_array($_sort,array_keys(self::$allowedSortingOptions))){
            $parts = explode(' ',$_sort);

            if(count($parts) < 2){
                array_push($parts,'desc');
            }

            list($sortField,$sortDirection) = $parts;
            $query->orderBy($sortField,$sortDirection);
        }
    }

    if($brands !== null) {
        if(!is_array($brands)){
            $brands = [$brands];
        }

        foreach ($brands as $brand){
            $query->orwhereHas('brand',function($q) use ($brand){
                $q->where('brand_id',$brand);
            });
        }
    }

    $lastPage = $query->paginate($perPage,$page)->lastPage();


    if($lastPage < $page) {
        $page = 1;
    }

    return $query->orwhereHas('category',function($q) use ($slug){
        $q->where('slug',$slug);
    })->paginate($perPage,$page);

}

使用品牌过滤器时的示例 sql

select * from `slasher_farming_mods` where exists (select * from `slasher_farming_brands` where `slasher_farming_mods`.`brand_id` = `slasher_farming_brands`.`id` and `brand_id` = '5') or exists (select * from `slasher_farming_categories` where `slasher_farming_mods`.`category_id` = `slasher_farming_categories`.`id` and `slug` = '') order by `name` desc limit 4 offset 0

Slug 变量变为空。

如何将 slug 变量数据保存在品牌循环或排序循环内?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...