我有两个不同的控制器,用户和公司。我想同时保存来自用户控制器和公司控制器的数据。在用户控制器中组合公司控制器的存储方法是一种好的做法吗?
用户控制器
$user = new User(array(
'name' => $request->get('name'),
));
$user->save();
$company = new Company(array(
'name' => $request->get('name'),
));
$company->save();
答案 0 :(得分:0)
如果你正确设置了关系,你可以:
$user = \App\User::create([
"name" => $request->name,
"company_id" => \App\Company::create([
"name" => $request->name
])->id
]);
答案 1 :(得分:0)
假设您的company_id
表中以及用户模型中有users
:
public function company() {
return $this->hasOne(Company::class);
}
保存公司和公司都可以。 UserController中的用户。最好的方法是使用Eloquent Relations并将两个保存包装在一个事务中。
\DB::transaction(function() {
$user->save();
$user->company()->save($company);
});
或另一种方法:
$user->setRelation('company', $company)->push()
push()
的魔力将拯救用户&公司一气呵成。
答案 2 :(得分:0)
首先存储用户和公司
$user = new User();
$user->name = $request->name;
$user->save();
$company = new Company();
$company->name = $request->name;
$company->save();
然后,看看你的关系
如果一个用户可以拥有一家公司(在公司的表中有user_id)
$user->company()->save($company);
or
$company->user()->associate($user);
如果一个公司可以有一个用户(在用户的表中有company_id)
$company->user()->save($user);
or
$user->company()->associate($company);