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:在 API 测试中使用 Eloquent 模型