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

就像标题所说的那样,我在查询和Laravel方面遇到问题。由于某些原因,前缀“ dev_”被添加到我的列名中(仅列名,而不是表名或其他)。当然会导致以下错误,因为该列没有“ dev_”前缀

http://img4.mukewang.com/609e304a0001ac0d16130873.jpg

该问题发生在运行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上,发生了上述问题。


MM们
浏览 107回答 1
1回答

鸿蒙传说

您的模型名称是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是您要在关系中使用的列。
打开App,查看更多内容
随时随地看视频慕课网APP