Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在条令中从多对多关系表中删除行_Php_Zend Framework_Doctrine_Many To Many - Fatal编程技术网

Php 如何在条令中从多对多关系表中删除行

Php 如何在条令中从多对多关系表中删除行,php,zend-framework,doctrine,many-to-many,Php,Zend Framework,Doctrine,Many To Many,Hi I在两个表、Contacts和Tags之间有M:M关系,它们的M:M表称为Contacts\u Tags: Contacts ------------ ID Name Tags ----------- ID Name Contacts_Tags -------------- Contact_ID Tag_ID 我有名为Contact的联系人实体和名为Tag的标记实体,但没有名为Contacts\u Tags table的标记实体 我只想从联系人标签中删除行。这是我在联系人实体中的关系

Hi I在两个表、Contacts和Tags之间有M:M关系,它们的M:M表称为Contacts\u Tags:

Contacts
------------
ID
Name

Tags
-----------
ID
Name

Contacts_Tags
--------------
Contact_ID
Tag_ID
我有名为Contact的联系人实体和名为Tag的标记实体,但没有名为Contacts\u Tags table的标记实体

我只想从联系人标签中删除行。这是我在
联系人
实体中的关系

/**
 * Many Contacts have Many Tags.
 * @ORM\ManyToMany(targetEntity="Tag", inversedBy="contacts", cascade={"remove"})
 * @ORM\JoinTable(name="Contacts_Tags",
 *      joinColumns={@ORM\JoinColumn(name="Tag_ID", referencedColumnName="ID")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="Contact_ID", referencedColumnName="ID")}
 *      )
 */
private $tags;
我试过这个问题,但没用

$queryBuilder                    =  $this->entityManager->getRepository(Contact::class)->createQueryBuilder("o")
            ->leftJoin("o.tags", "ct")
            ->leftJoin(Tag::class, "t", "WITH", "t.ID", "ct.Tag_ID")
            ->where("t.Name = :tagName")
            ->delete("o.tags", "ct")
            ->setParameter(":tagName", $diffBeat)
        ;

您只需将其从集合中删除即可

您可以在Contact类中定义如下函数:

function removeTag(Tag $tag)
{
   if($this->tags->contains($tag)){
      $this->tags->removeElement($tag);
   }
}
然后坚持你的实体