我知道为什么很多人在Laravel项目中使用$users = DB::table('users')->get();
代替$users = Users::all();
?是什么原因?
此致
答案 0 :(得分:4)
您可以这样做,因为Model和DB facade都实现了生成Builder实例的函数。
https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Model.html
https://laravel.com/api/5.2/Illuminate/Database/Query/Builder.html
不同之处在于,Model的实例具有使用预先指定的信息(如表)建立Builder的属性,并且还为其提供事件,关系信息,特定的静态绑定以及一系列约束对象的方便助手。使面向对象的编程更容易。
所以,是的,您可以使用模型,然后获取查询Builder对象并更改其表(就像您可以更改有关Builder的任何其他内容),但它正在与专门设计用于进行查询构建的系统进行斗争更容易。
从本质上讲,Laravel所做的就是采用Symfony2框架并简化它,以便一切都更简单。模型就是这样的一个例子。
答案 1 :(得分:2)
来自Laravel
public static function all()
{
$input = array_merge(static::get(), static::query(), static::file());
// ....
return $input;
}
所以all()调用get()并返回它的内容以及query()和file()$ _FILES超全局。
偏好显然取决于环境。我个人选择使用Input :: get($ key,$ default),因为我通常知道自己在追求什么。