mysql - Doctrine2 实体与Where条件的关系

标签 mysql symfony doctrine-orm entity-relationship

我的数据库架构;

LIKE      PAGE    ARTICLE    
id        id      id
userid    name    text
itemid
itemtype

和我的实体;

页面.php;

/**
 * @ORM\OneToMany(targetEntity="Like", mappedBy="page")
 */
 protected $likes;

文章.php;

/**
 * @ORM\OneToMany(targetEntity="Like", mappedBy="article")
 */
 protected $likes;

Like.php;

/**
 * @ORM\ManyToOne(targetEntity="Page", inversedBy="likes")
 * @ORM\JoinColumn(name="itemid", referencedColumnName="id")
 */
 protected $page;

/**
 * @ORM\ManyToOne(targetEntity="Article", inversedBy="likes")
 * @ORM\JoinColumn(name="itemid", referencedColumnName="id")
 */
 protected $article;

我的问题;如何添加WHERE条件?

像这样;

@ORM\JoinColumn(name="itemid", referencedColumnName="id", condition="itemtype=1")

可能吗?

最佳答案

即使有可能,你也会做错。 Like 表中最好有 article_idpage_id,而不是您的 item_iditemtype 标识符。

示例: 如果您按照我上面所说的操作,您将能够在数据库级别设置级联删除@ORM\JoinColumn(...., onDelete="CASCADE")。这意味着如果文章被删除,所有喜欢的内容也将通过外键自动删除。

如果您按照自己的方式进行操作,那么您将必须手动处理。最好把它留给数据库;代码越少,出错的可能性就越小。

关于mysql - Doctrine2 实体与Where条件的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20782702/

相关文章:

php - 由另一个表约束的两行的最大值

php - MySQL 在第 1 行错误的 '' 附近使用正确的语法

python - MySQL cur.execute with 格式

forms - 交响乐 2.3.6。嵌套形式

php - Symfony 2 缓存 Doctrine 查询结果

python - 如何将 lineedit 中的内容插入到 MySQL 中?

php - 使用 Symfony-php 将日期格式错误的 csv 导入 MySQL

unit-testing - 如何测试使用 DateTime 获取当前时间的函数?

orm - 对于 Doctrine ORM,为什么除了 PDO 还需要 DBAL?

php - 删除与 EntityManager 的多对多关系的对象部分返回错误