【问题标题】:Laravel:Difference between Schema builder and Eloquent anyone?Laravel:Schema builder 和 Eloquent 有什么区别吗?
【发布时间】:2013-04-14 09:14:56
【问题描述】:

我是 Laravel 的新手。因此,如果我可以使用 Schema builder 生成表,然后使用像 DB::table('user')->find(1) 这样的查询来查询数据,那么 Eloquent 适合整个场景的哪个位置?它有什么用途?

【问题讨论】:

    标签: database schema laravel builder eloquent


    【解决方案1】:

    Eloquent 是 Laravel 附带的 ORM (Object-relational mapping) 的名称。 Eloquent 允许您与表进行交互,就好像它们是对象一样,但是 Eloquent 不知道您在表上的实际列。

    让我们考虑简单的User 模型。我们希望这个模型能够查询我们users 表上的记录。

    class User extends Eloquent {
    
        protected $table = 'users';
    
    }
    

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

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

    可以这样查询。

    $user = User::find(1);
    

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

    这里的好处是:

    1. 您不必在每次调用时都指定您的表名。
    2. 代码读起来好多了,它是语法糖。
    3. 您可以在表之间创建复杂的关系并使用预加载。
    4. 您可以使用批量分配保护和 setter/getter 等功能。
    5. 您还可以获得使用查询构建器的所有好处,因此您可以轻松地在 DBMS 之间切换。

    我只提到了 Eloquent。它还有很多。我建议你看看以下资源。

    【讨论】:

    • 你的意思是说,如果我想使用 Eloquent,我必须在使用 Schema builder 创建表后手动创建 Eloquent 模型?
    • 如果使用 Laravel 5,那么 php artisan make:model User 命令将为模式构建器创建一个迁移存根和一个用户模型。创建后,您可以修改两者以填补空白(即任何剩余的列、关系等)。
    猜你喜欢
    • 2015-12-03
    • 2017-03-31
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多