加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Laravel query.php中的硬编码id列

发布时间:2020-12-14 19:43:21 所属栏目:大数据 来源:网络整理
导读:我在Laravel中遇到了一些问题,因为query.php中的某些方法有一个硬编码的id作为列.因此,如果在数据库中使用除id之外的其他名称,这些函数将失败. 在我的情况下,我有一个现有的MSSQL数据库,用户表的标识列是UserId而不是id.在我的情况下,问题出现在用户登录后
我在Laravel中遇到了一些问题,因为query.php中的某些方法有一个硬编码的id作为列.因此,如果在数据库中使用除id之外的其他名称,这些函数将失败.

在我的情况下,我有一个现有的MSSQL数据库,用户表的标识列是UserId而不是id.在我的情况下,问题出现在用户登录后 – 脚本barfs:

SELECT TOP 1 [userid] FROM [User] WHERE [id] = ?

在尝试检索用户数据时,Fluent似乎调用了其中一个有问题的函数,在query.php中找到.有没有人解决这个问题,如果是这样,你是如何处理的?

更新:

我使用Fluent作为Auth驱动程序,并在执行Auth :: check()或Auth :: guest()时触发错误.堆栈跟踪如下所示:

#0 C:laraveldatabaseconnection.php(183): LaravelDatabaseConnection->execute('SELECT TOP 1 [u...',Array)
#1 C:laraveldatabasequery.php(709): LaravelDatabaseConnection->query('SELECT TOP 1 [u...',Array)
#2 C:laraveldatabasequery.php(653): LaravelDatabaseQuery->get(Array)
#3 C:laraveldatabasequery.php(624): LaravelDatabaseQuery->first(Array)
#4 C:laravelauthdriversfluent.php(21): LaravelDatabaseQuery->find('162')
#5 C:laravelauthdriversdriver.php(79): LaravelAuthDriversFluent->retrieve('162')
#6 C:laravelauthdriversdriver.php(65): LaravelAuthDriversDriver->user()
#7 C:laravelauthdriversdriver.php(55): LaravelAuthDriversDriver->check()

解决方法

您的问题有两种解决方案:

>不要使用Eloquent(我从你的问题中推断出那就是你正在使用的).相反,请使用Fluent,例如

$users = DB::table('users')->where('UserId','=',1)->first();

虽然这种方法具有限制性,但是,阻止您使用Eloquent.
>像这样定义你的模型:

class User extends Eloquent {
    public static $key  = 'UserId';
    public static $table = 'users';
}

其中$key是主键的名称,$table是表的名称(如果不是模型名称的复数,则非常有用).这看起来很棒我想但不幸的是,如果你使用关系可能还不够.有关更多信息,请查看此workaround.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读