Laravel 是否插入包含关系数据的行?

Laravel 是否插入包含关系数据的行?,laravel,laravel-5,eloquent,laravel-5.1,Laravel,Laravel 5,Eloquent,Laravel 5.1,这是一个简化版本,但。。。用户可以提交包含其姓名和资格的表格 我有两个表格-用户和资格。用户具有许多资格。资格证书有一个用户 我这样储蓄: $user = new User; $user->first_name = 'Derek'; $qualification = new Qualification; $qualification->qualification = 'History Degree'; DB::transaction(function() use ($user,

这是一个简化版本,但。。。用户可以提交包含其姓名和资格的表格

我有两个表格-用户和资格。用户具有许多资格。资格证书有一个用户

我这样储蓄:

$user = new User;
$user->first_name = 'Derek';

$qualification = new Qualification;
$qualification->qualification = 'History Degree';

DB::transaction(function() use ($user, $qualification) {
   $user->save();
   User::find($user->id)->qualifications()->save($qualification);
});
我的问题是:

这是向表及其关系插入行的正确方法吗?有更好的办法吗

我的第二个问题……这句话:

User::find($user->id)->qualifications()->save($qualification);

这可能有点疯狂,但我只是想向我解释一下,$user->id获取先前插入行的id,如果两个人同时插入,我如何确保它获取正确的id?如中所示,用户A保存,然后用户B保存,然后第一个user::find位为用户A运行,但这会找到用户B的id。这就是事务的来源吗?

在通过执行此操作保存用户之前:

user->save();
我认为您应该首先将资格保存给该用户。只要代码的功能与当前的一样,我认为这就可以做到:

$user->qualifications()->save($qualification);
然后呢

user->save();

如果你能让它按这个顺序工作,你就不必担心获得错误的用户ID,如果他们几乎同时输入他们的信息,你就不必在错误的用户身上切换资格。

$user->ID从$user对象获取ID,不是先前插入行的id。用户A和用户B将有自己的请求周期,其中用户A的$User变量将有自己的id属性。就我对PHP和Laravel的理解而言,用户A的$user的$qualification不可能附加到用户B的$user。谢谢,但这不起作用。如果您不知道该关系所属的id,您将如何在资格证书上插入该关系?您认为一对多关系是否可行?你熟悉Laravel的这个特性吗?这个代码不起作用。正如我的问题所述,这是一种一对多关系。请确保在迁移和表中正确设置了一对多代码,并且在模型中正确设置了基本的一对多函数。如果你愿意的话,我可以带你过去。如果您已经正确设置了所有这些,我认为您需要:$qualification->user->associateAuth::user;这样,资格将始终与创建有问题资格的登录用户匹配。