實體我有我的控制器下面的代碼:如何創建無重複
foreach ($image->tags as $tag) {
$existingTag = $em->getRepository('AppMainBundle:InstagramTag')->findOneByTag($tag);
if ($existingTag) {
ladybug_dump('existing tag');
} else {
ladybug_dump('non existing tag');
$instagramTag = new InstagramTag();
$instagramTag->setTag($tag);
$em->persist($instagramTag);
}
}
這裏是我的實體:
/**
* @ORM\Entity
* @ORM\Table(name="app_instagram_tag")
* @ORM\HasLifecycleCallbacks()
*/
class InstagramTag
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
* @ORM\Column(name="tag", type="string", nullable=true)
*/
private $tag;
/**
*
* @ORM\OneToMany(targetEntity="App\MainBundle\Entity\InstagramPictureTag", mappedBy="tag")
*/
private $picturetag;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Get tag
*
* @return string
*/
public function getTag()
{
return $this->tag;
}
/**
* Set tag
*
* @param string $tag
* @return InstagramTag
*/
public function setTag($tag)
{
$this->tag = $tag;
return $this;
}
}
我最初開始稱爲app_instagram_tag一個空表。而$ image->標籤是一串字符串,例如["abc", "test", "etc"]
。當我開始使用空表時,它總是打印existing tag
?
顯示您的回購方法'findOneByTag' –
@Bram這可能主義的神奇方法之一 – Phil
你或許應該有一個唯一約束的代碼你的'tag'屬性。除此之外,看不出有什麼問題 – Phil