Laravel6 使用 AJAX WhereHas Error 500
Laravel6 WhereHas Error 500 when using AJAX
我是 Laravel 的新手,现在在我的应用程序中面临一个有趣的问题。
我有 3 张桌子。
制作人
- id
- producer_name
类型
- id
- type_name
型号
- id
- model_name
- 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()
并获得与我给定类型关联的生产者的完整响应。
我创建了一个函数,因此当用户 select 设备类型 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" 做点什么。我知道我可以通过首先询问模型 Table 并创建一个 Foreach 循环来解决这个问题。但是我的这个解决方案比我第一次尝试的可读性差。
有没有人建议我做错了什么,或者就像没有 AJAX 支持 WhereHas 查询一样?
亲切的问候
麦克
我认为这是你的问题use $type_id
请修正为
public function scopeFilterByType($query, $type_id)
{
$query->whereHas('models', function($q) use ($type_id) { $q->where('device_type_id', $type_id );});
}
我是 Laravel 的新手,现在在我的应用程序中面临一个有趣的问题。 我有 3 张桌子。
制作人
- id
- producer_name
类型
- id
- type_name
型号
- id
- model_name
- 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()
并获得与我给定类型关联的生产者的完整响应。
我创建了一个函数,因此当用户 select 设备类型 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" 做点什么。我知道我可以通过首先询问模型 Table 并创建一个 Foreach 循环来解决这个问题。但是我的这个解决方案比我第一次尝试的可读性差。
有没有人建议我做错了什么,或者就像没有 AJAX 支持 WhereHas 查询一样?
亲切的问候 麦克
我认为这是你的问题use $type_id
请修正为
public function scopeFilterByType($query, $type_id)
{
$query->whereHas('models', function($q) use ($type_id) { $q->where('device_type_id', $type_id );});
}