繁体   English   中英

Laravel质量分配不保存字段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM