繁体   English   中英

从不同的控制器将多个数据保存到数据库中-Laravel

[英]Saving Multiple Data into Database from Different Controllers - Laravel

我有两个不同的控制器,用户和公司。 我想同时保存来自用户控制器和公司控制器的数据。 在用户控制器中结合公司控制器的存储方法是一种好习惯吗?

用户控制器

  $user = new User(array(
            'name'  => $request->get('name'),
             ));

            $user->save();

    $company = new Company(array(
            'name'  => $request->get('name'),
             ));

            $company->save();

如果您已正确建立关系,则可以:

$user = \App\User::create([
  "name" => $request->name,
  "company_id" => \App\Company::create([
    "name" => $request->name
  ])->id
]);

假设您的users表中以及用户模型中都有company_id

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()的神奇之处在于可以一次性保存User&Company。

首先存储用户和公司

$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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM