尝试读取数组上的属性“名称”
Posted
技术标签:
【中文标题】尝试读取数组上的属性“名称”【英文标题】: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>
【问题讨论】:
【参考方案1】:$req->input
是一个数组。像这样访问它。
$user_model->fullname = $data['name'];
$user_model->mobile = $data['mobile'];
$user_model->email = $data['email'];
$user_model->password = $data['password'];
【讨论】:
我个人更喜欢使用$request->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->newPassword)
) 进行哈希处理。此外,它可能是模型默认使用 mutator 对密码进行哈希处理。
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于尝试读取数组上的属性“名称”的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 Laravel 8 中读取 null 上的属性“名称”
尝试读取数组上的属性“标题”(错误异常)Laravel Php
遍历对象数组-TypeError:无法读取未定义的属性“名称”