有几种方法可以将数据从laravel形式存储到数据库?

时间:2019-11-04 14:41:18

标签: mysql laravel eloquent

我是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());

1 个答案:

答案 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方法意味着无论使用哪种GETPOST或引用the docs的HTTP方法,都可以从用户输入中获取名称参数

获取输入值

使用一些简单的方法,您可以访问Illuminate\Http\Request实例中的所有用户输入,而不必担心该请求使用了哪个HTTP动词。不管HTTP动词如何,input方法都可用于检索用户输入:

$name = $request->input('name');

第三种方法使用请求中发布的所有内容的大规模分配,包括您不希望来自恶意用户(黑客)的意图

不惜一切代价避免它

希望这会有所帮助