Laravel - 与父母在同一张桌子上的一对多

时间:2016-11-01 14:06:50

标签: mysql laravel eloquent

这就是情景。

我填写表格,此表格包含姓名,电子邮件,国家和技能(这是一个包含许多技能的下拉列表,这些技能从预先填写的数据库表技能中填充)。当这个人填写表格时,他可以选择他拥有的多种技能。这意味着用户有很多技能。(一对多)。用户填写表单后单击“提交”。我想保存UserTable,并且UserSkills也保存与用户相关的信息。

问题是没有用户保存,所以无法获取theid来保存技能。按下保存时,两者都必须同时保存。

我如何才能在Laravel

中做到最好

2 个答案:

答案 0 :(得分:1)

我假设技能ID被格式化为数组。您有一个名为UserSkills的数据透视表。使用User类创建belongsToMany,因为这将是多对多关系(一个用户可以拥有多种技能,一种技能可以属于多个用户)。所以在你的App\User班级

public function skills(){
  return $this->belongsToMany('\App\UserSkills','table_name','user_id','skill_id');
}

Detailed info on pivot table creation

之后,当您创建用户

$user = new User();
$user->username = $request->input('username');
// other inputs or use a `create` method
$user->save();

之后将技能ID附加到新创建的用户。

$user->skills()->attach($request->input('skill_ids'));

答案 1 :(得分:0)

您可以将var分配给新创建的用户,如下所示:

$user = User::create([
    'username' => 'user'
]);

然后您可以在

以下的任何地方使用该$ user
UserSkills::create([
    'user_id' => $user->id,
]);