第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取實體列表,然后將它們設(shè)置為多對多關(guān)系

獲取實體列表,然后將它們設(shè)置為多對多關(guān)系

PHP
胡子哥哥 2022-07-16 16:37:05
我在項目中使用學(xué)說。我有一堂課Cardclass Card implements \JsonSerializable    {    /**     * @ORM\Id     * @ORM\Column(type="string")     */    private $id;    /**     * @ORM\Column(type="string", length=255)     */    private $sign;    /**     * @ORM\Column(type="string", length=10)     */    private $number;   /**     * Card constructor.     *     * @param $sign     * @param $number     */    public function __construct($sign, $number)    {        $this->sign = $sign;        $this->number = $number;        $this->id = \sprintf('%s_%s', $sign, $number);    }}還有一個CardPicker包含Cardclass CardPicker{    /**     * @ORM\Id     * @ORM\GeneratedValue     * @ORM\Column(type="integer")     */    private $id;    /**     * Card that could be picked.     *     * Many CardPicker have Many Card.     *     * @ManyToMany(targetEntity="Card", cascade={"persist", "remove"})     * @JoinTable(name="available_picker_cards",     *     joinColumns={@JoinColumn(name="card_picker_id", referencedColumnName="id")},     *     inverseJoinColumns={@JoinColumn(name="card_id", referencedColumnName="id")}     * )     */    private $availableCards;public function setCards(array $cards): void    {        $this->availableCards = new ArrayCollection($cards);    }}我在我的數(shù)據(jù)庫中保留了一些卡片。我想初始化我的CardPicker. 所以我寫了這個方法: public function initCardPicker(): CardPicker    {        // fetch all wanted cards and put them in CardPicker        $cards = $this->cardRepository->findAll();        $cardPicker = new CardPicker();        $cardPicker->setCards($cards);        return $this->repository->save($cardPicker);    }但我收到了這個錯誤信息:SQLSTATE[23000]: Integrity constraint violation: 19 UNIQUE constraint failed: card.id (500 Internal Server似乎當(dāng)我將CardPicker它保存到re-persist我的卡片時,它在我的系統(tǒng)中應(yīng)該是唯一的。我在映射方面做錯了嗎?
查看完整描述

1 回答

?
千巷貓影

TA貢獻1829條經(jīng)驗 獲得超7個贊

創(chuàng)建實體后執(zhí)行


php bin/console doctrine:migration:diff

php bin/console doctrine:migration:migrate

配置/服務(wù).yaml


    App\Repository\CardRepository:

        arguments:

            - '@doctrine'


    App\Entity\CardPicker:

        arguments:

            - '@doctrine'

            - 'App\Repository\CardRepository'

應(yīng)用程序/實體/Card.php


<?php


namespace App\Entity;


use Doctrine\ORM\Mapping as ORM;


/**

 * @ORM\Entity(repositoryClass="App\Repository\CardRepository")

 */

class Card

{

    /**

     * @ORM\Id()

     * @ORM\GeneratedValue()

     * @ORM\Column(type="string")

     */

    private $id;


    /**

     * @ORM\Column(type="string", length=255)

     */

    private $sign;


    /**

     * @ORM\Column(type="string", length=10)

     */

    private $number;


    /**

     * Card constructor.

     *

     * @param $sign

     * @param $number

     */

    public function __construct($sign, $number)

    {

        $this->sign = $sign;

        $this->number = $number;


        $this->id = \sprintf('%s_%s', $sign, $number);

    }


    /**

     * @return string

     */

    public function getId(): string

    {

        return $this->id;

    }


    /**

     * @param string $id

     * @return Card

     */

    public function setId(string $id): Card

    {

        $this->id = $id;

        return $this;

    }

}

應(yīng)用程序/實體/CardPicker.php


<?php


namespace App\Entity;


use Doctrine\Common\Collections\ArrayCollection;

use Doctrine\ORM\Mapping as ORM;


/**

 * @ORM\Entity(repositoryClass="App\Repository\CardPickerRepository")

 */

class CardPicker

{

    /**

     * @ORM\Id()

     * @ORM\GeneratedValue()

     * @ORM\Column(type="integer")

     */

    private $id;


    /**

     * Card that could be picked.

     *

     * Many CardPicker have Many Card.

     *

     * @ORM\ManyToMany(targetEntity="Card", cascade={"persist", "remove"})

     * @ORM\JoinTable(name="available_picker_cards",

     *     joinColumns={@ORM\JoinColumn(name="card_picker_id", referencedColumnName="id")},

     *     inverseJoinColumns={@ORM\JoinColumn(name="card_id", referencedColumnName="id")}

     * )

     */

    private $availableCards;


    public function __construct()

    {

        $this->availableCards = new ArrayCollection();

    }


    /**

     * @return mixed

     */

    public function getId()

    {

        return $this->id;

    }


    /**

     * @param mixed $id

     * @return CardPicker

     */

    public function setId($id)

    {

        $this->id = $id;

        return $this;

    }


    /**

     * @return mixed

     */

    public function getAvailableCards()

    {

        return $this->availableCards;

    }


    /**

     * @param mixed $availableCards

     * @return CardPicker

     */

    public function setAvailableCards(array $availableCards)

    {

        $this->availableCards = $availableCards;

        return $this;

    }


    public function addAvailableCard(Card $card)

    {

        if (!$this->availableCards->contains($card)) {

            $this->availableCards->add($card);

        }

    }


    public function removeAvailableCard(Card $card)

    {

        $this->availableCards->removeElement($card);

    }

}

應(yīng)用程序/存儲庫/CardPickerRepository.php


<?php


namespace App\Repository;


use App\Entity\CardPicker;

use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;

use Doctrine\Common\Persistence\ManagerRegistry;


/**

 * @method CardPicker|null find($id, $lockMode = null, $lockVersion = null)

 * @method CardPicker|null findOneBy(array $criteria, array $orderBy = null)

 * @method CardPicker[]    findAll()

 * @method CardPicker[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)

 */

class CardPickerRepository extends ServiceEntityRepository

{

    protected $cardRepository;


    public function __construct(ManagerRegistry $registry, CardRepository $cardRepository)

    {

        $this->cardRepository = $cardRepository;

        parent::__construct($registry, CardPicker::class);

    }


    public function initCardPicker(): CardPicker

    {

        $em = $this->getEntityManager();

        $cards = $this->cardRepository->findAll();


        $picker = new CardPicker();

        $picker->setAvailableCards($cards);


        $em->persist($picker);

        $em->flush();


        return $picker;

    }

}

應(yīng)用程序/存儲庫/CardRepository.php


<?php


namespace App\Repository;


use App\Entity\Card;

use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;

use Doctrine\Common\Persistence\ManagerRegistry;


/**

 * @method Card|null find($id, $lockMode = null, $lockVersion = null)

 * @method Card|null findOneBy(array $criteria, array $orderBy = null)

 * @method Card[]    findAll()

 * @method Card[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)

 */

class CardRepository extends ServiceEntityRepository

{

    public function __construct(ManagerRegistry $registry)

    {

        parent::__construct($registry, Card::class);

    }

}


查看完整回答
反對 回復(fù) 2022-07-16
  • 1 回答
  • 0 關(guān)注
  • 95 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號