我有一个'用户'表和'activation_tokens'表。我在用户模型中与hasOne(ActivationToken :: class)有关系;Laravel mass-assignment插入新记录create()的替代方法?
这一切工作正常。现在我想在创建用户时创建一个令牌。所以我打电话
$user->ActivationToken()->create(array('token'=>'RANDOM_STRING"));
这是一切都好,但我打的质量分配错误。我不要想要设置'令牌'作为可填写。
相反,我尝试
$activationToken = new ActivationToken();
$activationToken->token = 'RANDOM_STRING";
$activationToken->save();
这是确定,但它不设置查询user_ID的领域。我想我可以手动设置$activationToken->user_id = $user->id;
但是这种感觉是错误的,因为ORM应该自动处理这个,只要文档看起来像广告一样。所以我觉得我做错了什么?
我想不出如何正确地做到这一点。任何提示?
谢谢!
如果你想去_ORM way_,那么你需要在你的'可填充的'数组中设置令牌来进行批量分配。否则,您需要使用不首选的方法'$ activationToken-> user_id = $ user-> id'手动设置它。两种方法你可以去。你为什么不想将字段设置为“可填充”? – codedge
如果我必须将可填充的所有东西都设置为可以使用ORM方式,那么它是否会破坏可填充/防护的目的?除非整个质量分配是一个有缺陷的概念?无论如何,谁会将随机http请求中的所有值分配给数据库查询。 :) 只需在参数user_id并插入令牌的ActivationToken类中创建一个函数就不会更简洁吗?然后我可以调用ActivationToken :: inserToken($ user-> id)并完成它。 –
@codedge请参阅我发布的答案。似乎有一种方法可以使用批量分配来更新表格,而无需向可填写的列添加列。 –