原则 2 findby 关系对象触发字符串转换错误

2022-08-30 19:55:47

假设我在 Doctrine2 中有两个彼此相关的实体,模型\用户和模型\注释。如果我在教义2.0.0中这样做...

<?php
// $em instanceof EntityManager, $user instanceof Models\User
$comments = $em->getRepository('Models\Comment')
    ->findBy(array('user' => $user, 'public' => true));

...我收到一个 PHP 错误:

严重性:通知

消息:类模型的对象\用户到字符串的转换

文件名:DBAL/Connection.php

行号:574

这不应该发生,对吧?如果我使用QueryBuilder并设置Parameter('user',$user),它可以按预期工作。


答案 1

允许按关系查询,但必须在其中传递标识符。尚不支持按对象查询,只会将其放入 2.1。

<?php
// $em instanceof EntityManager, $user instanceof Models\User
$comments = $em->getRepository('Models\Comment')
->findBy(array('user' => $user->getId(), 'public' => true));

答案 2

对于symfony 4.1,这段代码对我有用。

$comments = $this->getDoctrine()
                ->getRepository(Models\Comment::class)
                ->findBy(
                ['user' => $user->getId(), 'public' => true]
);

推荐