Symfony 2 中的 Mysql 查看表
Posted
技术标签:
【中文标题】Symfony 2 中的 Mysql 查看表【英文标题】:Mysql Views Table in Symfony 2 【发布时间】:2015-07-21 15:09:26 【问题描述】:我的数据库中有视图表,如何从这些视图中检索数据?
我尝试使用
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery('SELECT * FROM my_views');
$result = $query->getResult();
但它不起作用。
【问题讨论】:
您在createQuery
中编写的是本机SQL,而createQuery
需要DQL 语句。
Execute raw SQL using Doctrine 2的可能重复
您可以使用本机 sql 并将其映射到实体。见doc
是的,请参阅文档上的 examples
嗨@monkeyUser,是的,如果您想将结果映射到对象中,您需要编写相关类或使用现有类并根据需要映射字段
【参考方案1】:
如果你想执行一个简单的 SQL 查询,你可以这样做:
$con = $this->getDoctrine()->getEntityManager()->getConnection();
$stmt = $con->executeQuery('SELECT * FROM my_views');
foreach ($stmt->fetchAll() as $row)
print_r($row);
当您使用$em->createQuery()
时,您需要使用 Doctrine 实体。
如果您想在视图中使用映射,只需创建一个实体:
namespace Your\Bundle\Entity;
/**
* @ORM\Entity
* @ORM\Table(name="my_view")
*/
class MyView
/**
* @ORM\Column(type="integer")
* @ORM\Id
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $someVarcharColumn;
public function getId()
return $this->id;
public function getSomeVarcharColumn()
return $this->someVarcharColumn;
您可以像这样使用 DQL 查询它:
$results = $em->createQuery('
SELECT v
FROM YourBundle:MyView v
')->getResult();
【讨论】:
太好了,我可以在视图上做一个映射吗?我想要getter方法 感谢您的宝贵时间。我必须以“手动”方式创建一个实体,我不能让这个实体具有某些功能? 你可以从数据库中生成实体,但我对此并不熟悉,所以你应该阅读这里的文档:symfony.com/doc/current/cookbook/doctrine/… 我已经将symfony.com/doc/current/cookbook/doctrine/… 用于“经典”表,我不知道是否也适合视图...再次感谢! 创建视图后,我运行 schema:update 和 cache:clear 和 composer update。但它给了我一个错误找不到名为“MyView.orm.yml”的类“YourBundle\Entity\MyView”的映射文件。我正在使用 Symfony 2.8...提前致谢。以上是关于Symfony 2 中的 Mysql 查看表的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 抛出 ServiceCircularReferenceException