2015-07-13 134 views
8

所以,我很困惑這個: 在Laravel的官方文檔,他們說:雄辯模型和模型的區別?

能言善辯的ORM包含Laravel提供了一個美觀,簡潔 ActiveRecord的實現與數據庫的工作。每個 數據庫表都有一個相應的「型號」,用於與該表進行交互 。

Ok util這裏一切都很好,我明白了!

所以我做一個遷移來建立一個數據庫:PHP工匠製作:所以遷移create_items_table --create =「項目」

大,直到這裏太:)

從理論上講,到時我會令:PHP工匠製作:模型項目,Laravel將創建一個PHP類(用於與項目表進行交互):

class Item extends Eloquent { 

    ... 

    } 

但是,REA升的世界,當我提出:PHP工匠製作:模型項目,Laravel創建的PHP類(用於與項目表進行交互)::

class Item extends Model { 

    ... 

    } 

爲啥模式,而不是雄辯?我錯過了什麼? Eloquent模型和模型有什麼區別。

如果有差異,我應該何時使用雄辯和模型...?

謝謝^^

回答

7

我發現我的問題解決...

所以通常情況下,你必須將別名添加到你的config/app.php

'aliases' => [ 
     'Eloquent' => Illuminate\Database\Eloquent\Model::class, 

當你創建一個模型,Laravel會的use Eloquent;代替use Illuminate\Database\Eloquent\Model;這是爲什麼我認爲,有些人可能會使用模型中,當其他可以使用口才,它只是一個給一個意義感的命名空間的事:3

+1

亞那,右@elarib使用別名,你也可以use.thax很多 –

+0

而我只是注意到,默認情況下,擴展Eloquent是在Laravel 4,而Laravel 5使延伸默認模型... – elarib

+1

yap 5.1也使默認擴展模型。你不需要添加這一個。 –

1

雄辯是給予ORM(對象關係映射)的名稱附帶Laravel。 Eloquent可以讓你和你的表一樣與對象交互,但Eloquent不知道你桌子上的實際列。

讓我們考慮簡單的User model。我們希望這個模型能夠查詢我們的users表中的記錄。

class User extends Eloquent { 

protected $table = 'users'; 

} 那裏有一個非常簡單的模型。現在,而不是像這樣查詢。

$user = DB::table('user')->find(1); 

您可以這樣查詢。

$user = User::find(1); 

Eloquent本身使用它自己的查詢生成器,但確實回退到標準查詢生成器。這意味着它具有查詢生成器上的所有方法可用,等等。

的這裏的好處是:

  • 您不必在每次調用指定表名。
  • 代碼讀得更好,它是句法糖。
  • 您可以在表格之間創建複雜關係並使用預先加載。
  • 您可以使用諸如質量分配保護和setter/getter等功能。

我只涉及到雄辯。還有更多。我建議你看看下面的資源。

For more exact simple example click here

+0

你沒有回答我的問題,我總是使用模型,而不是像這樣簡單的查詢:DB :: table('user')...我的問題是爲什麼,當我創建一個模型時,Laravel從模型擴展而不是雄辯? – elarib

+0

是的,laravel完全可以擴展到不是來自於Eloquent的模型。Laravel自帶的雄辯ORM使得它非常容易與數據庫交互 –

+1

https://scotch.io/tutorials/a-guide-to-using-eloquent-orm -in-laravel閱讀這個表達,當你可以定義或者你可以創建模型 –