我是Laravel的新手,据我所知,有三种方法可以将数据表单存储到DB中,如果我记错了,请纠正我:
第一种方式:从模型实例化对象
$tutor = new Tutor();
$tutor ->name = $request->name;
// in some tutorials they use:
// $tutor->name = request('name');
// what is the difference?
$tutor ->salary = $request->salary;
$tutor->save();
第二种方式:将对象转换为数组
$tutor = array([
'name' => $request->name, // vs 'name' => $request->input('name'), what is the difference?
'salary' => $request->salary
]);
$tutor->save(); // Do I need to save here?
第三种方式:使用全局帮助器方法
$tutor = Tutor::create($request->all());
答案 0 :(得分:1)
request('name')
和$request('name');
之间的差异
request()
是一个全局帮助器函数,可在任何地方使用以访问HTTP请求对象
$request
是传递给控制器功能的参数,这意味着传递给该控制器的 THE 请求,在通过表单请求类验证数据时很有用
我需要在这里保存数据吗?
第二种方法完全不应该按照书面规定工作
$tutor = new Tutor([
'name' => $request->name,
'salary' => $request->salary
]);
$tutor->save();
它正在手动剥离其他表单发布的数据,与
没有什么不同$tutor = new Tutor();
$tutor->create(request()->only(['name', 'salary']));
$request->name
与'名称'=> $ request-> input('名称') 有什么区别?
使用input
方法意味着无论使用哪种GET
或POST
或引用the docs的HTTP方法,都可以从用户输入中获取名称参数
获取输入值
使用一些简单的方法,您可以访问Illuminate\Http\Request
实例中的所有用户输入,而不必担心该请求使用了哪个HTTP动词。不管HTTP动词如何,input
方法都可用于检索用户输入:
$name = $request->input('name');
第三种方法使用请求中发布的所有内容的大规模分配,包括您不希望来自恶意用户(黑客)的意图
不惜一切代价避免它
希望这会有所帮助