首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >transform()必须是App\DigitalCase的一个实例

transform()必须是App\DigitalCase的一个实例
EN

Stack Overflow用户
提问于 2018-06-25 18:03:44
回答 2查看 1.2K关注 0票数 2
代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-25 18:52:29

使用$digital_cases = DB::table('digital_cases');不会为您提供DigitalCase模型的实例(或集合)。您需要使用DigitalCase。若要启动可以附加条件子句的查询,请以

代码语言:javascript
复制
$digital_cases = DigitalCase::query();

然后,继续以同样的方式追加子句。当您传递一个闭包(->get()等)时,您将得到一个DigitalCase模型集合(如果使用->first(),则为单个DigitalCase )。

票数 2
EN

Stack Overflow用户

发布于 2018-06-25 19:03:02

您可以使用when来简化和清理条件查询。

代码语言:javascript
复制
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 () { .. }相同的结果

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51029437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档