Mysql 视图 - 自动增量不起作用(通过 Eloquent ORM)
Posted
技术标签:
【中文标题】Mysql 视图 - 自动增量不起作用(通过 Eloquent ORM)【英文标题】:Mysql Views - Auto incremental not working (through Eloquent ORM) 【发布时间】:2017-05-16 10:33:18 【问题描述】:对于一个项目,我设置了多个应该跨站点工作的数据库。我有一个“主”网站,其中包含所有(重要)表,例如用户、类别和组。然后我也设置了“奴隶”网站,基本上形成了一个网站集群。所有这些网站都驻留在同一个数据库中。
从属网站的视图从主网站连接到表,通过 Eloquent 获得结果完美无缺,我得到了我应该得到的结果。
现在的问题是,当我尝试将某些内容插入从属设备(视图)时,因为自动增量似乎不起作用/没有考虑。
我想一个解决方案可能是运行 SELECT COUNT ..
查询并将返回的 Integer 增加一,但这并不像是应该使用的解决方案。
一些应该有用的信息:
视图由以下查询创建:
CREATE OR REPLACE VIEW $this->tablename AS SELECT * FROM $this->source.$this->tablename WITH CASCADED CHECK OPTION
我尝试执行的命令如下:
// Create a new id/entry in the Group table.
$__model = new \App\Group;
$__model->setConnection('ext_connection');
$__model->save();
// Create the translations here..
版本信息:
我正在运行 mysql 版本:mysql Ver 14.14 Distrib 5.7.17,适用于 Linux (x86_64)
我使用的是 Laravel 版本:5.4.21
我使用的是php版本:PHP 7.1.4-1+deb.sury.org~xenial+1
我希望有人能启发我如何正确插入视图。
【问题讨论】:
【参考方案1】:在 artisan tinker 中修修补补之后,我意识到 Eloquent ORM 不会将空字段插入为 NULL 值(按照 MySQL 标准应该是这种情况),而是将它们完全留空。
以这种方式插入视图会引发缺少列值的异常,这是视图抛出的正确错误。
因此,解决此问题的好方法类似于以下线程中所述:View Here。
【讨论】:
以上是关于Mysql 视图 - 自动增量不起作用(通过 Eloquent ORM)的主要内容,如果未能解决你的问题,请参考以下文章