使用 AJAX 时 Laravel6 WhereHas Error 500
Posted
技术标签:
【中文标题】使用 AJAX 时 Laravel6 WhereHas Error 500【英文标题】:Laravel6 WhereHas Error 500 when using AJAX 【发布时间】:2020-05-02 00:46:21 【问题描述】:我是 Laravel 新手,现在在我的应用程序中遇到了一个有趣的问题。 我有 3 张桌子。
生产者
身份证 生产者名称类型
身份证 类型名称型号
身份证 型号名称 device_type_id device_producer_id在我的生产者模型中,我定义了以下过滤器方法:
public function scopeFilterByType($query, $type_id)
$query->whereHas('models', function($q) use $type_id $q->where('device_type_id', $type_id ););
使用 Tinker,我可以做到以下几点:
App\DeviceProducer::filterByType(3)->get()
并获得与我的给定类型相关联的生产者的完整响应。
我创建了一个函数,因此当用户选择设备类型时,Ajax 将加载该类型的所有生产者。
public function reqProducer(Request $request)
$producers = DeviceProducer::filterByType($request->type_id)->get();
return response()->json( $producers );
但是当 AJAX 调用我的端点时,它会收到 HTTP500 错误。
例如,我在使用没有 WhereHas 的请求时发现:
$producers = DeviceProducer::where('id', $request->producer_id)->get();
它工作得很好,我得到了我的结果。所以它似乎与“WhereHas”有关。我知道我可以通过首先询问模型表并创建一个 Foreach 循环来解决这个问题。但是我这个解决方案的可读性不如我的第一次尝试。
有没有人建议我做错了什么,或者就像没有对 WhereHas 查询的 AJAX 支持一样?
亲切的问候 迈克
【问题讨论】:
【参考方案1】:我认为这是你的问题use $type_id
请修改为
public function scopeFilterByType($query, $type_id)
$query->whereHas('models', function($q) use ($type_id) $q->where('device_type_id', $type_id ););
【讨论】:
非常感谢。很遗憾我没有看到这个错误。以上是关于使用 AJAX 时 Laravel6 WhereHas Error 500的主要内容,如果未能解决你的问题,请参考以下文章