【问题标题】:Laravel Eloquent: adding variable inside where like clause (undefined variable)Laravel Eloquent:在 where like 子句中添加变量(未定义的变量)
【发布时间】:2021-07-29 08:09:02
【问题描述】:
$search_category = "Gen";
$all_categories = HmsBbrCategory::query()
    ->when(empty($search_category), function ($query) {
        $query->where('category_id', '>=', '1');
    })
    ->when(!empty($search_category), function ($query) {
        $query->where('category_name', 'LIKE', "%$search_category%");
    })
    ->orderBy('category_id', 'ASC')
    ->get();

我的!empty() 将触发,因为$search_category 有一个值。我还需要在LIKE %% 中使用相同的$search_category 值。

添加'LIKE', "%$search_category%" 给我"message": "Undefined variable: search_category",

如何修复未定义的变量

【问题讨论】:

    标签: sql laravel variables eloquent sql-like


    【解决方案1】:

    这是因为变量的作用域。您的变量在回调范围内不存在。使用use 关键字将它传递给这样的:

    ->when(!empty($search_category), function ($query) use ($search_category) {
        $query->where('category_name', 'LIKE', "%$search_category%");
    });                                
    

    【讨论】:

      猜你喜欢
      • 2019-07-17
      • 2015-01-30
      • 1970-01-01
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 2020-11-04
      相关资源
      最近更新 更多