Symfony2, Doctrine2, MySql, view tables

2019-02-25 06:22发布

Simple question, is there support for view-tables in doctrine2? I found that it can 'read' current schema http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/schema-manager.html But can it create new view-tables like others entity\tables ?

It can solve a lot of issues.

2条回答
地球回转人心会变
2楼-- · 2019-02-25 06:36

if you want to define views in mappers I think you can't do this If you want simply use views to read data from them I think you can do it. Simply define views fields in mapper as for general tables

查看更多
手持菜刀,她持情操
3楼-- · 2019-02-25 06:41

The technique I used is to create an entity based on the view :

php app/console doctrine:generate:entity

Verify the following parameters in the created entity annotations : /** * @ORM\Table(name="table_name") * @ORM\Entity(repositoryClass="AppBundle\Repository\TableNameRepository") */

Then create a new table with a sql command :

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

To add a doctrine like primary key to your view, use this statement :

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

Or you can specify the new table name with Doctrine and create it with a :

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

followed by a

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

Then use your entity in the controller, as simple as that.

查看更多
登录 后发表回答