Eloquent模型和模型之间的区别?

时间:2015-07-13 10:13:36

标签: php laravel orm model eloquent

所以,我对此感到困惑: 在Laravel的官方文档中,他们说:

  

Laravel附带的Eloquent ORM提供了一个美丽,简单的   用于处理数据库的ActiveRecord实现。每   数据库表具有相应的“模型”,用于交互   那张桌子。

Ok util这里一切都很棒,我明白了!

所以我进行迁移以创建数据库: php artisan make:migration create_items_table --create =“items”

直到这里也很棒:)

所以从理论上讲,当我做: php artisan make:model Item 时,Laravel会创建一个php类(用于与items表交互):

   class Item extends Eloquent {

     ...

    }

但是,在现实世界中,当我制作: php artisan make:model Item 时,Laravel创建php类(用于与items表交互)::

   class Item extends Model {

     ...

    }

为什么模型而不是雄辩?我错过了吗? Eloquent Model和Model之间有什么区别。

如果存在差异,我应该何时使用Eloquent和模型......?

谢谢^^

2 个答案:

答案 0 :(得分:8)

我找到了问题的解决方案......

通常,您必须在config / app.php

中添加别名
 'aliases' => [
        'Eloquent'  => Illuminate\Database\Eloquent\Model::class,

当你创建一个模型时,Laravel会use Eloquent;而不是use Illuminate\Database\Eloquent\Model;这就是为什么我认为,有些人可能会使用模型,当其他人可能使用Eloquent时,它只是一个赋予意义感的问题命名空间:3

答案 1 :(得分:1)

Eloquent是Laravel附带的ORM(对象关系映射)的名称。 Eloquent允许您与表进行交互,就像它们是对象一样,但是Eloquent并不知道您桌面上的实际列。

让我们考虑简单的User model。我们希望此模型在users表上查询记录。

class User extends Eloquent {

protected $table = 'users';

} 那是一个非常简单的模型。现在,而不是像这样查询。

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

您可以这样查询。

$user = User::find(1);

Eloquent本身使用自己的查询构建器,但确实回退到标准查询构建器。这意味着它具有查询构建器上的所有方法,以及更多。

这里的好处是:

  • 您不必在每次通话时指定您的表名。
  • 这段代码读得更好,它的语法糖。
  • 您可以在表之间创建复杂关系并使用预先加载。
  • 您可以使用质量分配保护和设置器/获取器等功能。

我只触及过Eloquent。它还有很多东西。我建议你看看以下资源。

For more exact simple example click here

相关问题