【问题标题】:Attempt to read property "name" on array尝试读取数组上的属性“名称”
【发布时间】:2021-12-07 04:00:03
【问题描述】:

我正在尝试通过表单在数据库表中输入数据。我创建了一个模型实例并访问了该表的列并分配了表单的输入名称,但是当我输入数据提交时,它说尝试读取数组上的属性“名称”。如果有什么问题,谁能指导我。

将数据插入数据库的控制器代码

class UserController extends Controller
{
    function registerUser(Request $req)
    {
        $data = $req->input();
       
        $user_model = new User;
        $user_model->fullname = $data->name;
        $user_model->mobile = $data->mobile;
        $user_model->email = $data->email;
        $user_model->password = $data->password;
        $user_model->save();

        return "registered successfully";
    }
}

表格代码

<div class="register-form">
    <h4>Sign Up</h4>

    <form method="post" action="register">
        @csrf
    
        <input type="text" name="name" placeholder="Full Name" size="40">
    
        <br>
    
        <input type="tel" name="mobile" placeholder="Mobile number" size="40">
    
        <br>
    
        <input type="email" name="email" placeholder="Email" size="40">
    
        <br>
    
        <input type="password" name="password" placeholder="Password" size="40">
    
        <br>
    
        <input id="submit_btn" type="submit" placeholder="Sign Up" size="40">

        <hr>

        <p>Already, have an account <span href="#" id="sign-in-link">Log In</span></p>
    </form>
</div>

【问题讨论】:

    标签: mysql laravel forms model sql-insert


    【解决方案1】:

    $req-&gt;input 是一个数组。像这样访问它。

    $user_model->fullname = $data['name'];
    $user_model->mobile = $data['mobile'];
    $user_model->email = $data['email'];
    $user_model->password = $data['password'];
    

    【讨论】:

    • 我个人更喜欢使用$request-&gt;get('name')来防止未定义的索引错误。 (还有一个小错误$data['name']应该是$data['mobile']
    • 一般来说我永远不会使用这种方法,但觉得它对于错误来说是适当的。我总是以 $user->fill($request->validated); 结尾使用可填充、设置器和验证是 imo 的最佳方法
    【解决方案2】:
    function registerUser(Request $req)
    {       
        $user_model = new User;
        $user_model->fullname = $req->name;
        $user_model->mobile = $req->mobile;
        $user_model->email = $req->email;
        $user_model->password = bcrypt($req->password); //laravel hashed password
        $user_model->save();
        return "registered successfully";
    }
    

    【讨论】:

    • 总是解释你的答案。除此之外,使用 Laravel 函数对密码 (Hash::make($request-&gt;newPassword)) 进行哈希处理。此外,它可能是模型默认使用 mutator 对密码进行哈希处理。
    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 2021-05-25
    • 2022-06-27
    • 2022-01-08
    • 2021-08-08
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多