[英]Laravel mass assignment not saving fields
我想将数据保存到一个函数中有2个表。 一个是“ Users
表,第二个是“ Clinic
表。
我的用户表当前正常工作,但是我不确定这是否是“最佳实践”:
$user = User::create([
'name' => Str::title($request->get('name')),
'email' => $request->get('email'),
'password' => bcrypt($request->get('password'))
])
->clinic()->create($request->only([
'name' => Str::title('clinic_name'),
'telephone',
'address_1',
'address_2',
'city',
'postcode'
]));
我的问题出现在Clinic
表的“名称”列。 即使它位于我的“ Clinic
列中的$ fillable数组中,它也不会保存它:
protected $fillable = ['user_id', 'name', 'telephone'', 'address_1',
'address_2', 'city', 'postcode'];
我试图将这些方法“束缚”在一起,因为我想将“ user_id”保存在Clinic
表中,因为它们是相关的。
非常感谢您的帮助。
您将在$request->only()
调用中覆盖name
键:
$user = User::create([
'name' => Str::title($request->get('name')),
'email' => $request->get('email'),
'password' => bcrypt($request->get('password'))
])->clinic()->create($request->only([
'name' => Str::title('clinic_name'), // This is overriding your 'name' field.
'telephone',
'address_1',
'address_2',
'city',
'postcode'
]));
如果您要在clinic_name
上运行Str::title()
,则需要手动分配属性,如下所示:
$user = User::create([
'name' => Str::title($request->get('name')),
'email' => $request->get('email'),
'password' => bcrypt($request->get('password'))
])->clinic()->create([
'name' => Str::title($request->get('clinic_name')),
'telephone' => $request->get('telephone'),
'address_1' => $request->get('address_1'),
'address_2' => $request->get('address_2'),
'city' => $request->get('city'),
'postcode' => $request->get('postcode'),
]);
注意 :提示,您也可以像这样检索请求输入作为属性:
->create([
'name' => $request->name // Performs $request->get('name').
])
使用create()
,不能使用'name' => Str::title('clinic_name')
create()
,它必须是'name'
的单个键。
您可以在创建用户之前使用以下命令:
$request->replace('name' => Str::title('clinic_name'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.