laravel 中 Eloquent 和数据库认证驱动有啥区别

Posted

技术标签:

【中文标题】laravel 中 Eloquent 和数据库认证驱动有啥区别【英文标题】:what is the difference between Eloquent and database authentication drivers in laravellaravel 中 Eloquent 和数据库认证驱动有什么区别 【发布时间】:2016-10-17 08:45:56 【问题描述】:

在 laravel 里面,config/auth.php

我们默认有这个

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],
    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],

我的问题是这两个驱动程序有什么区别? 如果我将驱动程序更改为database 是否意味着我不能再使用 eloquent 了?

【问题讨论】:

【参考方案1】:

有一个区别:eloquent 对表使用 ORM 抽象,而database 使用直接 SQL 查询。如果您打算拥有一个自定义的 Auth 类,则 ORM 抽象更容易扩展。如果你(只有表并且你不打算扩展你的 Auth 层)或(你不使用 Eloquent 做其他事情),那么数据库是一个不错的选择。

这种差异的技术原因是微妙的,也许令人惊讶:基于 Laravel 的应用程序不需要使用 Eloquent ORM。在这种情况下,应用程序可能仍然希望使用 Laravel 提供的身份验证外观,因此 Laravel 需要一种不同的方式来存储和检索身份验证数据:因此需要数据库驱动程序。

来自Laravel documentation:

如果您的应用程序没有使用 Eloquent,您可以使用使用 Laravel 查询构建器的数据库身份验证驱动程序。

大多数基于 Laravel 的应用程序都使用 Eloquent,因此默认使用 Eloquent Auth 类。如果您将驱动程序更改为database,您仍然可以在您的应用程序中使用 Eloquent,尽管我无法想象这种组合的用例。

【讨论】:

您可以将您的最后一条评论添加到答案中吗?所以我可以回答这个问题

以上是关于laravel 中 Eloquent 和数据库认证驱动有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

laravel 5.1 中 Eloquent 和 Query Builder 有啥区别?

laravel 返回与 eloquent 和 laravel 的关系

如何在 Laravel/Eloquent 中获得完整的关系

Laravel:在 API 测试中使用 Eloquent 模型

Laravel 6.0 Eloquent - 按日期和状态排序

在 Laravel 中使用 Eloquent 进行更高级的数据库查询