为了账号安全,请及时绑定邮箱和手机立即绑定

不需要的前缀会添加到查询的列名中

不需要的前缀会添加到查询的列名中

PHP
MM们 2021-04-27 17:29:21
就像标题所说的那样,我在查询和Laravel方面遇到问题。由于某些原因,前缀“ dev_”被添加到我的列名中(仅列名,而不是表名或其他)。当然会导致以下错误,因为该列没有“ dev_”前缀该问题发生在运行Apache和Laravel 5.0.18的Ubuntu服务器上。我将其设置为可以处理多个数据库(一个数据库用于生产,一个数据库用于开发)。这是我的config / database.php的连接...'default' => 'mysql','connections' => [        'sqlite' => [            'driver'   => 'sqlite',            'database' => storage_path().'/database.sqlite',            'prefix'   => '',        ],        'mysql' => [            'driver'    => 'mysql',            'host'      => env('DB_HOST', 'localhost'),            'database'  => env('DB_DATABASE', 'forge'),            'username'  => env('DB_USERNAME', 'forge'),            'password'  => env('DB_PASSWORD', ''),            'charset'   => 'utf8',            'collation' => 'utf8_unicode_ci',            'prefix'    => '',            'strict'    => false,        ],        'mysqldev' => [            'driver'    => 'mysql',            'host'      => env('DB_HOST', 'localhost'),            'database'  => env('DB_DEV_DATABASE', 'forge'),            'username'  => env('DB_USERNAME', 'forge'),            'password'  => env('DB_PASSWORD', ''),            'charset'   => 'utf8',            'collation' => 'utf8_unicode_ci',            'prefix'    => '',            'strict'    => false,        ],    ]...生产数据库(mysql)和开发数据库(mysqldev)在表,列等方面是相同的...我通过雄辩的模型在我的api中使用它们(每次一个模型用于prod,一个模型用于dev)为我的开发api设置了路由组前缀,该路由组的前缀与prod api相同,但使用的是开发模型。对于prod API来说,它工作得非常好,但是在dev API上,发生了上述问题。
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

您的模型名称是DevUser,但是您正在user_id数据库中使用它。如果您未明确指定用于关系的列,Laravel将尝试猜测它的dev_user_id来源。定义您的关系,如下所示:

DevSave.php

public function user(){    return $this->belongsTo('pgc\DevUser', 'user_id');}

或者考虑dev在您的关系名称中使用,例如public function devUser()等等。

您的代码在生产环境中起作用的原因是您使用的是User,而不是DevUser,因此Laravel正确地猜测这user_id是您要在关系中使用的列。


查看完整回答
反对 回复 2021-05-14
  • 1 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号