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 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?