dongshao8125 2015-10-30 16:41
浏览 19
已采纳

Symfony学说加入其他表

I am having troubles with joining tables via ORM mapping

This is my Follow Entity

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="follows")
 */
class Follow
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(name="user_id", type="integer")
     * @ORM\ManyToOne(targetEntity="User", inversedBy="users")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     */
    protected $userId;

    /**
     * @ORM\Column(name="follower_id", type="integer")
     */
    protected $followerId;

    /**
     * @ORM\Column(name="is_active", type="boolean")
     */
    protected $isActive = true;

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

    /**
     * Get user id
     *
     * @return integer
     */
    public function getUserId()
    {
        return $this->userId;
    }

    /**
     * Get follower id
     *
     * @return integer
     */
    public function getFollowerId()
    {
        return $this->followerId;
    }

    /**
     * Get is active
     *
     * @return integer
     */
    public function isActive()
    {
        return $this->isActive;
    }

    /**
     * Set user id
     */
    public function setUserId($userId)
    {
    $this->userId = $userId;
    }

    /**
     * Set follower id
     */
    public function setFollowerId($followerId)
    {
    $this->followerId = $followerId;
    }

    /**
     * Set active
     */
    public function setActive($active)
    {
        $this->isActive = $active;
    }
}

I want $userId to contains User, not just userId. I have tried to join with Doctrine mapping,but it is not working.

How should i do it right way?

Thank you!

  • 写回答

1条回答 默认 最新

  • douwen1901 2015-10-30 18:22
    关注

    You should remove the line @ORM\Column(name="user_id", type="integer") which overrides your mapping and leave just:

    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="users")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     */
    protected $user;
    

    Also you should name your property just $user, not $userId as it contains User object, not its ID.

    The line @ORM\JoinColumn(name="user_id", referencedColumnName="id") in this case is not necessary as Doctrine will name this field user_id itself.

    Please read more about Doctrine mappings here.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助