我想知道爲什麼很多人在Laravel項目中使用$users = DB::table('users')->get();
而不是$users = Users::all();
?什麼是理由?使用DB :: table()或Model :: all()Laravel的Eloquent
問候
我想知道爲什麼很多人在Laravel項目中使用$users = DB::table('users')->get();
而不是$users = Users::all();
?什麼是理由?使用DB :: table()或Model :: all()Laravel的Eloquent
問候
你可以這樣做,因爲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
不同的是,模型的實例有其中設置了預先指定的信息的生成器,如表屬性,也爲它提供的事件,關係信息,特定靜態綁定,和一些其他方便的助手,這些助手限制對象並使面向對象編程更容易。
所以是的,你可以使用一個模型,然後使用查詢生成器對象並更改它的表格(就像你可以更改關於生成器的其他任何東西一樣),但是它正在與專門設計用於使查詢構建更容易的系統作鬥爭。
Laravel的核心是採用Symfony2框架並簡化它,所以一切都比較簡單。模型就是這樣一個例子。
從Laravel
public static function all()
{
$input = array_merge(static::get(), static::query(), static::file());
// ....
return $input;
}
因此,所有的()調用get()並返回它的內容與查詢(一起)和文件()的$ _FILES超級全局。
偏好顯然取決於環境。我個人選擇使用Input :: get($ key,$ default),因爲我通常知道我在做什麼。
個人喜好? –
有些人不使用模型,因爲它並不真正瞭解MVC,但使用模型更清晰。有時你必須直接查詢表格。 – Vuldo
Eloquent是查詢生成器上的另一個層。您可以使用構建器進行復雜的查詢。但你的例子是一樣的,這裏是一個速度差異的基準:https://blog.sriraman.in/laravel-eloquent-vs-fluent-query-builder/ – Iamzozo