Php Symfony 2实体存储库find()返回空数组

Php Symfony 2实体存储库find()返回空数组,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,谢谢大家从现在开始的回答。这就是问题所在。我有一个symfony 2应用程序,有两个实体(任务和产品)。当我试图查找(findBy、findOneBy、findAll)一个产品时,它返回一个空数组 任务实体 <?php namespace pablo\UserBundle\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; use Symfony\Co

谢谢大家从现在开始的回答。这就是问题所在。我有一个symfony 2应用程序,有两个实体(任务和产品)。当我试图查找(findBy、findOneBy、findAll)一个产品时,它返回一个空数组

任务实体

    <?php

namespace pablo\UserBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Task
 *
 * @ORM\Table(name="tasks")
 * @ORM\Entity(repositoryClass="pablo\UserBundle\Repository\TaskRepository")
 * @ORM\HasLifecycleCallbacks()
 */
class Task
{
    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="tasks")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
     */
    protected $user;

    /**
     * @ORM\ManyToOne(targetEntity="Product", inversedBy="task")
     *  @ORM\JoinColumn(name="product_id", referencedColumnName="id", onDelete="CASCADE")
     */
    protected $product;

public function __construct()
    {
        $this->tasks = new ArrayCollection();
    }


/**
     * Set product
     *
     * @param \pablo\UserBundle\Entity\Product $product
     *
     * @return Task
     */
    public function setProduct(\pablo\UserBundle\Entity\Product $product = null)
    {
        $this->product = $product;

        return $this;
    }

    /**
     * Get product
     *
     * @return \pablo\UserBundle\Entity\Product
     */
    public function getProduct()
    {
        return $this->product;
    }

    /**
     * @return ArrayCollection
     */
    public function getTasks()
    {
        return $this->tasks;
    }

    /**
     * @param ArrayCollection $tasks
     */
    public function setTasks($tasks)
    {
        $this->tasks = $tasks;
    }

实际上,您有一个结果,它只是一个空对象,因为您没有定义应该打印哪些属性

最好的解决方案是让您的实体实现JsonSerializable

class Product  implements \JsonSerializable
{
...
public function jsonSerialize()
{
    return [
        "id"=> $this->getId(),
        "name" => $this->getProductsName()
    ];
}
现在它知道了在将类转换为json对象时应该打印什么

如果还需要任务集合,请为任务实体和外接程序产品实体实现JsonSerializable

 public function jsonSerialize()
{
    return [
        "id"=> $this->getId(),
        "name" => $this->getProductsName(),
        "task" => $this->getTask()->toArray()
    ];
} 

您可以在打印对象的地方添加代码吗?这是controller返回的(从Ajax调用)->返回新的JsonResponse(['success'=>1,'product'=>$product]);这是浏览器->{“成功”:1,“产品”:{}}OMG@Jannes你现在是我的英雄!!它工作得很好。
class Product  implements \JsonSerializable
{
...
public function jsonSerialize()
{
    return [
        "id"=> $this->getId(),
        "name" => $this->getProductsName()
    ];
}
 public function jsonSerialize()
{
    return [
        "id"=> $this->getId(),
        "name" => $this->getProductsName(),
        "task" => $this->getTask()->toArray()
    ];
}