symfony doctrine getArrayResult错误500

时间:2014-09-08 14:11:15

标签: symfony doctrine entity

我尝试从表格中抓取一些数据,只要我不使用

->andwhere('s.client_id = :clientid')
->setParameter('clientid', $this->clientId)

我使用上面的两行来找到只有必要的数据,我最终得到一个错误500 :( :(

该实体看起来像:

class SanitationType
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;


/**
 * @ORM\ManyToOne(targetEntity="Pr\UserBundle\Entity\Client")
 * @ORM\JoinColumn(name="client_id", referencedColumnName="id")
 */
private $client;

/**
 * @ORM\Column(type="string", length=20)
 * @Gedmo\Translatable
 */
private $name;

/**
 * @ORM\Column(type="string", length=255, nullable=true)
 * @Gedmo\Translatable
 */
private $description;

/**
 * @ORM\Column(name="`enabled`", type="boolean")
 */
private $enabled;
    /**
 * @ORM\Column(type="string", length=255, nullable=true)
 */
private $created_by;
    /**
 * @ORM\Column(type="datetime", nullable=true)
 */
private $created;

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

和我在控制器中获取数据的脚本如下所示:

$query = $em->createQueryBuilder()
    ->select('s')
    ->from('PrSensorBundle:SanitationType', 's')
    ->where('s.enabled = 1')
    ->andwhere('s.client_id = :client_id')
    ->setParameter('client_id', $this->clientId)
    ->orderBy('s.name', 'ASC')
    ->getQuery();
$results=$query->getArrayResult();

我没有看到任何错误,但它根本不起作用:( :(

我忘记了什么吗?

1 个答案:

答案 0 :(得分:1)

一些事情。首先,不清楚$this->clientId引用了什么,但是如果你试图引用与SanitationType对象关联的客户端对象的id,那么你需要有一个公共getClient()方法客户端类上的SanitationType类和getId()方法。因此,从SanitationType对象$sanitationType获取客户端ID然后变为:

$sanitationType->getClient()->getId()

其次,SanitationType类中没有client_id属性。 Doctrine在您定义类时会看到类的属性。因此,在这种情况下,要通过客户端关联的id在数据库中查找SanitationType对象,您需要执行内部联接。您的查询构建器将如下所示:

$query = $em->createQueryBuilder()
    ->select('s')
    ->from('PrSensorBundle:SanitationType', 's')
    ->innerJoin('s.client', 'sc')
    ->where('s.enabled = 1')
    ->andwhere('sc.id = :client_id')
    ->setParameter('client_id', $this->clientId)
    ->orderBy('s.name', 'ASC')
    ->getQuery();
$results=$query->getArrayResult();