警告:get_class()期望参数1是对象,给定整数

时间:2018-02-13 09:02:22

标签: php symfony doctrine-orm orm

当我想将一些数据插入数据库时​​,我不知道是什么问题它显示了这个错误

<?php

namespace ArticleBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * ArticleRate
 *
 * @ORM\Table(name="article_rate")
 * @ORM\Entity(repositoryClass="ArticleBundle\Repository\ArticleRateRepository")
 */
class ArticleRate
{

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="date", type="date")
     */
    private $date;

    /**
     * @var int
     *
     * @ORM\Id
     * @ORM\OneToOne(targetEntity="Article")
     * @ORM\JoinColumn(name="article_id", referencedColumnName="id")
     */

    private $idArticle;

    /**
     * @var int
     * @ORM\Id
     * @ORM\OneToOne(targetEntity="GUBundle\Entity\Utilisateur")
     *
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     */
    private $idUser;

    public function __construct()
    {
        $this->date = new \DateTime();

    }


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

    /**
     * Set date
     *
     * @param \DateTime $date
     *
     * @return ArticleRate
     */
    public function setDate($date)
    {
        $this->date = $date;

        return $this;
    }

    /**
     * Get date
     *
     * @return \DateTime
     */
    public function getDate()
    {
        return $this->date;
    }

    /**
     * Set idArticle
     *
     * @param integer $idArticle
     *
     * @return ArticleRate
     */
    public function setIdArticle($idArticle)
    {
        $this->idArticle = $idArticle;

        return $this;
    }

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

    /**
     * Set idUser
     *
     * @param string $idUser
     *
     * @return ArticleRate
     */
    public function setIdUser($idUser)
    {
        $this->idUser = $idUser;

        return $this;
    }

    /**
     * Get idUser
     *
     * @return string
     */
    public function getIdUser()
    {
        return $this->idUser;
    }
}

    /**
     * @param $id
     * @return JsonResponse
     */
    public function AimeArticlesAction($id)
    {
        $em = $this->getDoctrine()->getManager();
        $article=new ArticleRate();
        $article->setIdArticle(1);
        $article->setIdUser(1);
        dump($article);
        $article=(object) $article;
        $em->persist($article);
        $em->flush();
        return new JsonResponse("yes");
    }

}

1 个答案:

答案 0 :(得分:0)

这个错误对我来说似乎很清楚:你给出一个整数(1)并且教义需要一个对象。

Doctrine是管理对象。这意味着您应该使用($width, $height)而不是$article->getUser()->getId()

针对您的具体问题:这两个函数需要对象

$article->getUserId()

这就是为什么你应该命名这些方法 $article->setIdArticle(1); $article->setIdUser(1); Article。 您可以使用User

为他们提供代理对象
getReference

请阅读我认为您远离良好做法的学说文档