ai didi

php - 我可以对没有数据库表的实体使用 ResultSetMapping->addEntityResult() 吗?

转载 作者:搜寻专家 更新时间:2023-10-31 21:08:51 24 4
gpt4 key购买 nike

出现此错误:

Class "Bundle\LeagueStanding" is not a valid entity or mapped super class.

当我使用它时:

$sql = '......';

$rsm = new ResultSetMapping();
$rsm->addEntityResult('Bundle:LeagueStanding', 's');
$rsm->addFieldResult('s', 'played', 'played');
//........etc
$query = $this->_em->createNativeQuery($sql, $rsm);

return $query->getResult();

LeagueStanding 没有数据库表,这就是我想保留它以强制规范化的方式(不存储计算值)。是否仍然可以对没有数据库表的实体使用 ResultSetMapping?可以说是 DTO?

namespace Bundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Bundle\Entity\League;
use Bundle\Entity\Team;
use Bundle\Entity\Season;

class LeagueStanding
{
private $position = 0;

private $played = 0;

private $homePlayed = 0;

private $awayPlayed = 0;

private $won = 0;

private $homeWon = 0;

private $awayWon = 0;

private $lost = 0;

.................

......

最佳答案

的确,ResultSetMapping 看起来只能与现有实体一起使用。自 Doctrine 2.4 以来,可以使用 “NEW” Operator Syntax 来使用任何 PHP 类/POPO :

<?php
class CustomerDTO
{
public function __construct($name, $email, $city, $value = null)
{
// Bind values to the object properties.
}
}

<?php
$query = $em->createQuery('SELECT NEW CustomerDTO(c.name, e.email, a.city) FROM Customer c JOIN c.email e JOIN c.address a');
$users = $query->getResult(); // array of CustomerDTO

You can specify any PHP class, it only requires that the constructor of this class matches the NEW statement.

欢迎调用join our discussion on these strategies使用 PHP 和领域驱动设计。

关于php - 我可以对没有数据库表的实体使用 ResultSetMapping->addEntityResult() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26441412/

24 4 0
文章推荐: php - 如何在登录时向 symfony2 上的 session 注入(inject)特定值?
文章推荐: php - 没有特定 Symfony2 TWIG 页面的缓存
文章推荐: php - 如何为 Codeigniter 表创建可排序表 THEAD 链接
文章推荐: javascript - 自动完成不起作用
搜寻专家
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com