我有简单的实体:
id username guard
“guard”是来自同一实体的另一个用户的id。我必须使用简单表格渲染视图:
username | name of guard ------------------------- John | Bob
我试图通过询问来做到这一点:
$ur = $this->getDoctrine()->getRepository(User::class)->createQueryBuilder('u') ->leftJoin(User::class, 'u2', \Doctrine\ORM\Query\Expr\Join::WITH, 'u.guard = u2.id') ->getQuery() ->getResult();
但它只给我id和用户名,没有连接数据。我知道整个查询应该是这样的:
SELECT * FROM user u0_ LEFT JOIN user u1_ ON (u0_.guard = u1_.id)
但我找不到通过QueryBuilder实现该功能,然后在twig模板中访问该功能的方法。
当做
好的,我发现了代码中的错误:
/** * Many Users have One Guard (User) * @ORM\ManyToOne(targetEntity="User") */ private $guard = 0;
当我这样做的时候,Symfony自动强迫我更改代码,在“guard”列中,我必须插入User对象。
在这之后,我不再需要连接——只需从表中选择数据,保护列就包含了我可以在Twig中使用的用户对象,等等。
namespace AppBundle\Entity; use Doctrine\ORM\EntityRepository; class UserRepository extends EntityRepository { public function findAllDB() { $qb = $this->createQueryBuilder('u'); $query = $qb->getQuery(); return $query->execute(); } }
现在,如果有3个表涉及这样的东西,我希望这样做。 我的问题基本上是...是否可以在语句上执行3个表联接?正确的语法是什么?谢谢你。我做...
我在Oracle SQL Developer中创建了三个表,即 。表是连接表,因为和之间的关系是。 在hibernate中,我为和表创建了两个hibernate类和, 和表在hibernate类中定义如下: 我用一些记录填充了表和,连接表自动填充了一些记录。现在我目前面临的问题是,我想使用hiberante在连接表上使用一个简单的选择语句,如下所示: 我怎么能做到这一点,尽管联接表'Employe
问题内容: 我有一个在SQL中完美运行的查询,但是我有最糟糕的时间将其转换为linq。该表(下面的表1)保存了多种记录类型的状态更改。联接需要设置两个字段以创建有效联接:SubmissionId(状态所属的表的pk)和SubmissionTypeId(确定状态所属的表)。 我已经尝试过使用x.DefaultIfEmpty()中的y到x进行多次迭代,并且无法在正确的位置设置where子句。我需要从T
问题内容: 如何使用查询语句更改表名? 我使用以下语法,但在SQL Server 2005中找不到重命名关键字。 问题答案: 使用sp_rename: 您可以在MSDN上找到有关此过程的文档。 如果需要包括模式名称,则只能将其包含在第一个参数中(也就是说,不能将其用于将表从一个模式移动到另一个模式)。因此,例如,这是有效的:
下面的查询几乎给了我正确的计数,除了它包括具有重复p.promo_code和子值的行。如何使用DISTINCTp.promo_code查询? 我已经尝试了一些我在SO上看到的用于单连接查询的解决方案,比如---sum*COUNT(DISTINCT p.promo_code,submitid)/COUNT(*) 不走运。以下是完整的查询: 它运行得很快,解释计划看起来不错,但由于数据重复,目前有2个
问题内容: 编辑,根据以下答案略微更改了代码,但仍无法正常工作。 我还添加了一条日志消息,告诉我getCount是否返回> 0,并且确实如此,所以我认为查询可能有问题吗?或我对光标的使用。 我已经创建了一个表,我想检查它是否为空,如果它为空,我想运行一些插入语句(存储在数组中)。 下面是我的代码,虽然我没有错误,但是当我拉出.db文件时,我可以看到它不起作用。您将如何解决这个问题? 抱歉,如果这是