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;这样,资格将始终与创建有问题资格的登录用户匹配。