我的数据库架构:
LIKE PAGE ARTICLE
id id id
userid name text
我的问题 - 如何使用LIKE表在PAGE表和ARTICLE表之间建立关系? 通常:
Like.php:
/**
* @ORM\ManyToMany(targetEntity="Page", inversedBy="likes")
*/
protected $pages;
/**
* @ORM\ManyToMany(targetEntity="Article", inversedBy="likes")
*/
protected $articles;
page.php文件:
/**
* @ORM\ManyToMany(targetEntity="Like", mappedBy="pages")
* @ORM\JoinTable(name="like_page")
*/
protected $likes;
Article.php:
/**
* @ORM\ManyToMany(targetEntity="Like", mappedBy="article")
* @ORM\JoinTable(name="like_article")
*/
protected $likes;
但是,ID列在两个表(页面和文章)中都是相同的。不会实现。 我该怎么办?
答案 0 :(得分:0)
如果我的模糊问题和架构正确,你真正想要的是:
likes (
id,
user_id,
page_id,
article_id
)
答案 1 :(得分:0)
基本上,丹尼斯说。在这种模式中,您并不需要多对多的关系。一对多的关系就足够了。
Like.php:
/**
* @ORM\ManyToOne(targetEntity="Page")
* @ORM\JoinColumn(name="page_id", referencedColumnName="id")
*/
protected $page;
/**
* @ORM\ManyToOne(targetEntity="Article")
* @ORM\JoinColumn(name="article_id", referencedColumnName="id")
*/
protected $article;
page.php文件:
/**
* @ORM\OneToMany(targetEntity="Like", mappedBy="page")
*/
protected $likes;
Article.php:
/**
* @ORM\OneToMany(targetEntity="Like", mappedBy="article")
*/
protected $likes;
答案 2 :(得分:0)
您不需要Like.php实体。
你的“喜欢”是一个真正的User.php,它有$ likesPages(多对多页面)和likesArticles(多对多文章)。 =>反面
然后你的Page.php有$ likes(多对多用户)和Article.php有$ likes(多对多用户)。 => OWNING SIDE有连接表(likes_page_user和likes_article_user)
希望有所帮助!