Laravel中的响应自定义对象事务

时间:2017-11-19 01:40:53

标签: php laravel transactions

我已创建了一个事务,但我想返回在一个json中创建的所有数据。我想使用Laravel 5.5中的Resources来做到这一点。

这是我的交易:

$firstUser = DB::transaction(function () use ($request) {

        //Create Group Campany
        $groupCompany = \App\GroupCompany::create([
            'name' => $request['nameGroupCompany'],
            'cod' => $request['codGroupCompany'],
        ]);

        //Create Company
        $company = \App\Company::create([
            'group_company_id' => $groupCompany->id,
            'name' => $request['nameCompany'],
            'cod' => $request['codCompany'],
        ]);

        //Create Group User
        $groupUser = \App\GroupUser::create([
            'name' => 'Admin',
            'admin' => 1,
        ]);
        $groupUser->companies()->attach($company->id);            

        //Create Person
        $person = \App\Person::create([
            'firstName' => $request['name'],
            'middleName' => $request['middleName'],
            'lastName' => $request['lastName'],
            'dateOfBirth' => $request['dateOfBirth'],
        ]);
        $person->groupUsers()->attach($groupUser->id);

        //Create User
        $newUser = \App\User::create([
            'person_id' => $person->id,
            'name' => $request['name'],
            'email' => $request['email'],
            'password' => bcrypt($request['password']),
        ]);

        return ??????;

    });

最后我打电话给我的资源:

return new FirstUserResource($firstUser);

我该怎么办?

非常感谢。

马塞尔

2 个答案:

答案 0 :(得分:0)

如果您将所有数据作为单个json返回,我认为Collections会在这里帮助您吗?

$collection = collect([var1,var2]);
return $collection->toJson();

答案 1 :(得分:0)

将信息保存在array中,然后保存,如下所示:

$groupCompanya = array('name' => $request['nameGroupCompany'],
                               'cod' => $request['codGroupCompany']);

$groupCompany = \App\GroupCompany::create($groupCompanya);

将所有数据收集到新的array

$result  = array("groupCompany"=> $groupCompanya, "company" => $companya, "groupUser" => $groupUsera, "person"=>$persona, "newUser"=>$newUsera);

将其转换为jsonreturn后:

$json = array("result" => $result);
return json_encode($json,JSON_UNESCAPED_UNICODE);