【问题标题】:Adding data to Database in Laravel along with validated data and non validated data在 Laravel 中将数据与已验证数据和未验证数据一起添加到数据库
【发布时间】:2020-12-28 16:44:59
【问题描述】:

我的视图中有一个表单,提交时从控制器验证字段,我还需要向数据库添加一些不需要任何验证的数据。那么如何将这些经过验证的数据和未经验证的数据(未经验证的数据设置在控制器中,它没有与视图中的表单一起提交)数据存储在短代码中。

这是我的控制器

public function postRegister($type, Request $request){

    $message = "Succesfully Registered, Login to access your Account";

    $validatedData = $request->validate([
        'name' => 'required|max:100',
        'legal_type' => 'required|max:25',
        'phonenumber' => 'required|max:12',
        'email' => 'required|max:45',
        'linkedinprofile' => 'required|max:250',
        'address' => 'required:max:350',
        'country' => 'required|max:15',
        'email' => 'required|max:45',
        'password' => 'required|max:120',
        'terms' => 'required'
    ]);

    LegalProfessional::create($validatedData);

//        $lp = new LegalProfessional();
//        $lp->lp_name = $request->input('name');
//        $lp->lp_type = $request->input('legal_type');
//        $lp->lp_phone = $request->input('phonenumber');
//        $lp->lp_email = $request->input('email');
//        $lp->lp_linkedin_profile = $request->input('linkedinprofile');
//        $lp->lp_address = $request->input('address');
//        $lp->country = $request->input('country');
//        $lp->lp_membership_type = 'Premium';
//        //$lp->lp_rfqs = $request->input('name');
//        $lp->lp_username = $request->input('email');
//        $lp->password = $request->input('password');
   // $lp->save();
    Session::flash('message', 'Successfully Registered!');
    return redirect('/login');

【问题讨论】:

    标签: laravel laravel-8


    【解决方案1】:

    PHP 中,您可以将关联数组与+ 运算符一起添加。这基本上会将额外的字段添加到 $validatedData 的关联数组中。

    LegalProfessional::create(
        $validatedData +
        [
            'lp_membership_type' => 'premium',
        ]
    );
    

    在我看来,这是实现你想要的最简单、最漂亮的方法。

    编辑

    删除术语,使用 PHP 内置函数 unset(),如果传递了一个数组元素,则删除项目。

    unset($validatedData['terms']);
    
    LegalProfessional::create(
       ...
    

    要设置哈希密码,只需覆盖$validatedData 字段。

    $validatedData['password'] = Hash::make($request->input('password'));
    
    LegalProfessional::create(
       ...
    

    【讨论】:

    • 我还想添加散列密码?怎么可能?
    • 我还想在保存到数据库的同时删除 $validateData 中的“条款”,我只想在表单中使用“条款”。
    • 要从数组中删除一个键,只需在创建前执行 unset($validatedData['terms'])
    猜你喜欢
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2022-01-07
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 2015-01-31
    相关资源
    最近更新 更多