You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9嵌套where查询传递变量出现未定义错误的求助

解决Laravel 9嵌套where查询中「Undefined variable $id」错误

问题根源在于嵌套的匿名闭包函数无法直接访问外部作用域的$id变量——PHP闭包的作用域是独立的,必须显式引入外部变量才能使用。

只需给闭包添加use($id),将外部的$id变量引入闭包作用域即可修复:

修改后的完整代码:

public function edit($id)
{
    $category = Category::findOrFail($id);

    $parents = Category::
                where('status' , 'active')
                ->where('id' , '<>' , $id)
                ->where(function($query) use ($id){ // 新增use($id)引入变量
                    return $query
                    ->whereNull('parent_id')
                    ->orWhere('parent_id', '<>', $id);
                })->get();
}

use($id)的作用是让闭包捕获外部的$id变量,确保闭包内部能正常读取该值。如果需要在闭包中修改外部变量,可以改为use(&$id)(按引用传递),这里仅需读取值,按值传递即可。

内容的提问来源于stack exchange,提问作者Abdelmonaem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 05:45:39