如何在 laravel 5.8 或 6 中制作通用自定义包进行身份验证。*
Posted
技术标签:
【中文标题】如何在 laravel 5.8 或 6 中制作通用自定义包进行身份验证。*【英文标题】:how to make common custom package for authentication in laravel 5.8 or 6.* 【发布时间】:2020-06-07 18:19:28 【问题描述】:我必须在 laravel 中制作用于身份验证的自定义通用包,但有一个问题是,每当我使用 MongoDB 时,该包不起作用,而使用 mysql 时一切都很好。由于 laravel 模型,MySQL 使用 eloquent 模型,而 MongoDB 使用 jessengers 模型。那么有什么想法或技巧可以将单个模型用于不同的数据库吗?
使用 MySql 时
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
protected $table = 'users';
在 MongoDB 中
use Jenssegers\Mongodb\Auth\User as Authenticatable;
class User extends Authenticatable
protected $collection = 'users';
并得到像
这样的错误Symfony\Component\Debug\Exception\FatalThrowableError: 在文件 /var/www/test-authentication/vendor/laravel/framework/src/Illuminate/Database/Connection.php 中调用一个成员函数 prepare() /p>
【问题讨论】:
“不工作”错误?出乎意料的结果?你能显示代码吗?哪些 MongoDB/MySQL 版本已经过测试? 现在,我已经完全描述了,简而言之,我想在数据库在 MongoDB 或 MySQL 时使用单个模型 【参考方案1】:你可以试试这个:
$user = (new \App\User(['name'=>'FirstName', 'email'=>'testemail@email.com']))->setConnection('x-DB');
$user->save();
// without models
(new \App\User(['name'=>'My Name', x-'email'=>'testmail@email.com']))>setConnection('x-DB')->save();
它作为create
工作是一个实例化新静态的静态方法,所以它使用default connection
。
看看这个,https://laravel.com/docs/5.7/authentication
【讨论】:
分享您的错误详情,也尝试使用 dd();调试。看看你会得到什么。 请检查,我已经编辑了我的问题。并添加了错误行 你注册MongoDB服务提供者了吗,注册MongodbServiceProvider。'providers' => [ Jenssegers\Mongodb\MongodbServiceProvider::class, ]
以上是关于如何在 laravel 5.8 或 6 中制作通用自定义包进行身份验证。*的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 5.8 中的 htaccess 中重定向 [重复]
从 Laravel 5.8 升级到 6.2 后 ConfirmPasswordController 不存在
如何在 laravel 5.8 中使用 mailchimp 发送简单邮件
Laravel 5.8 到 6.x 升级错误 - App\Exceptions\Handler::renderHttpException 声明