【问题标题】:Symfony2, Doctrine2, MySql, view tablesSymfony2、Doctrine2、MySql、查看表
【发布时间】:2013-12-23 13:40:25
【问题描述】:

简单的问题,是否支持在学说 2 中的视图表?我发现它可以“读取”当前架构http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/schema-manager.html 但它可以像其他实体\表一样创建新的视图表吗?

它可以解决很多问题。

【问题讨论】:

  • 不,有简单的描述。如果我打电话给学说:模式:更新我会打破这个观点。我需要像基本实体一样对其进行完整描述(我的意思是视图)。

标签: mysql symfony doctrine-orm


【解决方案1】:

我使用的技术是基于视图创建实体:

php app/console doctrine:generate:entity

在创建的实体注解中验证以下参数: /** * @ORM\Table(name="table_name") * @ORM\Entity(repositoryClass="AppBundle\Repository\TableNameRepository") */

然后用sql命令新建一个表:

CREATE TABLE Table_Name 
AS 
SELECT v.field1,v.field2,v.field3,w.field4 
FROM view1 v,view2 w 
WHERE v.id=w.id;

要在视图中添加主键之类的学说,请使用以下语句:

ALTER TABLE Table_Name ADD INT PRIMARY KEY AUTO_INCREMENT NOT NULL;
ALTER TABLE Table_Name ADD CONSTRAINT pk_id PRIMARY KEY(id)

或者您可以使用 Doctrine 指定新表名并使用 :

php app/console doctrine:schema:update --dump-sql

后跟一个

php app/console doctrine:schema:update --force

然后在控制器中使用你的实体,就这么简单。

【讨论】:

  • app/console 应替换为 bin/console
【解决方案2】:

如果你想在映射器中定义视图,我认为你不能这样做 如果您只想使用视图从中读取数据,我认为您可以做到。只需在映射器中定义视图字段,就像一般表一样

【讨论】:

  • 是的,这似乎是不可能的,因为任何对原则更新调用的调用都会破坏它。我与另一位开发人员交谈过,我们决定学说不能处理视图表。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 1970-01-01
  • 2014-10-06
  • 2012-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多