我的数据库中有视图表,如何从这些视图中检索数据?
我尝试使用
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery('SELECT * FROM my_views');
$result = $query->getResult();
但它不起作用。
答案 0 :(得分:3)
如果要执行简单的SQL查询,可以这样做:
$con = $this->getDoctrine()->getEntityManager()->getConnection();
$stmt = $con->executeQuery('SELECT * FROM my_views');
foreach ($stmt->fetchAll() as $row){
print_r($row);
}
使用$em->createQuery()
时,您需要使用Doctrine实体。
如果要在视图中使用映射,juste将创建一个实体:
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();