public function index(Request $request) {
if ($request->has('show_type') && $request->show_type == 'deleted') {
$digital_cases = DigitalCase::onlyTrashed()->get();
} else {
$digital_cases = DB::table('digital_cases');
if ($request->has('caseName')) {
$digital_cases = $digital_cases->where('name', 'LIKE', $request->caseName . '%');
if ($request->has('addedBy')) {
$addedBy = $request->addedBy;
$digital_cases = $digital_cases->whereIn('added_by', function ($query) use ($addedBy) {
$query->select('id')->from('assistants')->where('firstname', 'LIKE', $addedBy . '%');
});
}
} else if ($request->has('addedBy')) {
$addedBy = $request->addedBy;
$digital_cases = $digital_cases->whereIn('added_by', function ($query) use ($addedBy) {
$query->select('id')->from('assistants')->where('firstname', 'LIKE', $addedBy . '%');
});
}
$digital_cases = $digital_cases->get();
}
$transformation = fractal()->transformWith(new DigitalCaseTransformer())->collection($digital_cases)->toArray();
return response()->json($transformation, 200);
}我真的厌倦了问问题。但我的最后一个问题是:我无法将digital_cases转换为DigitalCase模型实例。
我有个错误:
类型错误:传递给App\Transformers\DigitalCaseTransformer::transform()的参数1必须是App\DigitalCase的实例,也就是给定的stdClass实例,调用
如果一切正常的话。但是当它在其他条件下工作时,它会返回一个错误。如何将digital_cases变量转换为DigitalCase实例?
Laravel 5.6
发布于 2018-06-25 18:52:29
使用$digital_cases = DB::table('digital_cases');不会为您提供DigitalCase模型的实例(或集合)。您需要使用DigitalCase。若要启动可以附加条件子句的查询,请以
$digital_cases = DigitalCase::query();然后,继续以同样的方式追加子句。当您传递一个闭包(->get()等)时,您将得到一个DigitalCase模型集合(如果使用->first(),则为单个DigitalCase )。
发布于 2018-06-25 19:03:02
您可以使用when来简化和清理条件查询。
DigitalCase::when($request->has('caseName'), function ($q) {
return $q->where('name', 'LIKE', request()->caseName . '%');
})->when($request->has('addedBy'), function ($q) {
return $q->whereIn('added_by', function ($query) {
$query->select('id')->from('assistants')->where('firstname', 'LIKE', request()->addedBy . '%');
});
}})->get();,这将产生与所有if () { .. } else if () { .. }相同的结果
https://stackoverflow.com/questions/51029437
复制相似问题