获取id,而不是ManyToOne关系中的对象,以从API Rest发送它

时间:2017-05-05 13:46:46

标签: rest symfony doctrine-orm webix

由于API支持,我有一个我在数据表(webix)中发送的实体。在这个实体中,我有几个ManyToOne关系,我不知道如何显示或编辑。

在我的数据表中,当我尝试显示处于重新关系中的字段时,我得到了这个而不是id

[object Object]

当我尝试通过添加ID来编辑此字段时,我收到了此错误消息

Type error: Argument 1 passed to ErpBundle\Entity\Trial::setGSponsor() must be an instance of ErpBundle\Entity\Sponsor, string given

我理解我在数据表中获得的是一个对象,但我不知道如何获取该名称的ID(并且能够从数据表中选择它)。

我是否必须编辑吸气剂?存储库?

我试图像这样编辑我的getter,但当然它不起作用:

/**
* Get gSponsor
*
* @return \ErpBundle\Entity\Sponsor
*/
public function getGSponsor()
{

return $this->gSponsor->getId();
}

在我的代码的一部分下面:

在控制器中,我只是为视图渲染模板。 Webix只是将url作为参数来获取数据(url:“rest-> {{path('erp_trialapi_cgetload')}}”)数据表自动显示在我的ApiController中发送的内容

我的实体的一部分

class Trial
{
/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;     

/**
 *
 * @ORM\ManyToOne(targetEntity="ErpBundle\Entity\Sponsor")
 */
private $gSponsor;

/**
 * Get id
 *
 * @return int
 */
public function getId()
{
    return $this->id;
}

/**
 * Set gSponsor
 *
 * @param \ErpBundle\Entity\Sponsor $gSponsor
 *
 * @return Trial
 */
public function setGSponsor(\ErpBundle\Entity\Sponsor $gSponsor = null)
{
    $this->gSponsor->get = $gSponsor;

    return $this;
}

/**
 * Get gSponsor
 *
 * @return \ErpBundle\Entity\Sponsor
 */
public function getGSponsor()
{

    return $this->gSponsor;
}

我的API

class TrialApiController extends FOSRestController
{
/**
 * @Rest\Get("/api_t/get")
 */
public function cgetLoadAction()
{
    $em = $this->getDoctrine()->getManager();
    $repo = $em->getRepository('ErpBundle:Trial');
    $trials = $repo->findAll();
    return $trials;
}

我会感激任何帮助。

非常感谢!

0 个答案:

没有答案