我在一个功能中有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'];
我曾尝试过' Chain'方法在一起,因为我想保存' user_id'在Clinic
表中,因为它们相关。
非常感谢你的帮助。
答案 0 :(得分:0)
您正在覆盖name
来电中的$request->only()
键:
$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'
]));
如果您想对请求Str::title()
运行clinic_name
,则需要手动分配属性,如下所示:
$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').
])
答案 1 :(得分:0)
使用'name' => Str::title('clinic_name')
时,您不能拥有create()
,它必须是'name'
的单个密钥。
您可以在创建用户之前使用以下内容:
$request->replace('name' => Str::title('clinic_name'));