Laravel 批量分配不保存字段
Laravel mass assignment not saving fields
我想将数据保存到一个函数中的 2 个 table。一个是Users
table,第二个是Clinic
table.
我的用户 table 目前工作正常,但我不确定它是否 'best practice':
$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
table 的 'name' 列。它只是不保存它,即使它在我的 Clinic
列的 $fillable 数组中:
protected $fillable = ['user_id', 'name', 'telephone'', 'address_1',
'address_2', 'city', 'postcode'];
我试图 'Chain' 将这些方法放在一起,因为我想将 'user_id' 保存在 Clinic
table 中,因为它们是相关的。
非常感谢您的帮助。
您正在覆盖 $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'
]));
如果您想 运行 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').
])
使用create()
时不能有'name' => Str::title('clinic_name')
,必须是单键如'name'
。
您可以在创建用户之前使用以下内容:
$request->replace('name' => Str::title('clinic_name'));
我想将数据保存到一个函数中的 2 个 table。一个是Users
table,第二个是Clinic
table.
我的用户 table 目前工作正常,但我不确定它是否 'best practice':
$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
table 的 'name' 列。它只是不保存它,即使它在我的 Clinic
列的 $fillable 数组中:
protected $fillable = ['user_id', 'name', 'telephone'', 'address_1',
'address_2', 'city', 'postcode'];
我试图 'Chain' 将这些方法放在一起,因为我想将 'user_id' 保存在 Clinic
table 中,因为它们是相关的。
非常感谢您的帮助。
您正在覆盖 $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'
]));
如果您想 运行 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').
])
使用create()
时不能有'name' => Str::title('clinic_name')
,必须是单键如'name'
。
您可以在创建用户之前使用以下内容:
$request->replace('name' => Str::title('clinic_name'));