Laravel中如何在with()方法的关联数组中传递参数
Laravel 模型 with() 传递参数给关联方法的正确方式
你当前的写法无法正确传递参数给关联方法,正确的做法是使用闭包来定义关联的查询逻辑,在闭包里调用关联方法并传入参数:
Model::with(['functionB', 'functionA' => function ($query) use ($parameters) { $query->functionA($parameters); }])->get();
如果functionA是模型中定义的关联方法,需要根据参数过滤关联数据,也可以直接在闭包里编写过滤逻辑:
Model::with(['functionB', 'functionA' => function ($query) use ($parameters) { $query->where('column', $parameters); }])->get();
补充说明
- 不能直接在
with()的数组键里写带参数的方法名,这种写法Laravel无法解析参数 - 使用
use($parameters)可以把外部变量传入闭包中,确保关联查询能获取到参数 - 如果有多个需要传参的关联,每个都单独用闭包处理即可
内容的提问来源于stack exchange,提问作者Ramy Mohamed
相关产品推荐
相关产品推荐

