2015-07-13 105 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阅读这个表达,当你可以定义或者你可以创建模型 –