Symfony - '' 类型的预期值改为“字符串”

我正在尝试将 id 从一个编队表传递到票证表,但我无法传递此错误..


关联字段“App\Entity\Ticket#$formation”的“App\Entity\Formation”类型的预期值,取而代之的是“string”。


组建实体:


/**

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

 */

class Formation

{

    /**

     * @ORM\Id()

     * @ORM\GeneratedValue()

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

     */

    private $id;


    /**

     * @ORM\Column(type="array", nullable=true)

     */

    private $formations = [];


    /**

     * @ORM\Column(type="string", length=180, unique=true)

     */

    private $customerName;

...

票务实体:


/**

 * @ORM\MappedSuperclass()

 */

class Ticket implements TicketInterface

{

    use Timestampable;


    /**

     * @var integer

     *

     * @ORM\Column(name="id", type="integer")

     * @ORM\Id

     * @ORM\GeneratedValue(strategy="IDENTITY")

     */

    private $id;



    /**

     * @ORM\ManyToOne(targetEntity="Symfony\Component\Security\Core\User\UserInterface")

     * @ORM\JoinColumn(name="author", referencedColumnName="id", nullable=true)

     */

    private $author;


    /**

     * @ORM\ManyToOne(targetEntity="App\Entity\Formation")

     * @ORM\JoinColumn(nullable=false)

     */

    private $formation;

...

我的ticketControlleraddTicket():


public function addTicket(Request $request, TicketManager $ticketManager): Response

{

    $ticket = $ticketManager->newClass();

    $user = $this->getUser();


    $formationId = $user->getFormationId()->getId();

    $ticketForm = $this->createForm(TicketForm::class, $ticket);

    $ticketForm->handleRequest($request);


    if ($ticketForm->isSubmitted() && $ticketForm->isValid()) {

        $ticketManager->createTicket($user, $ticket, $formationId);

        $this->addFlash('success', 'Le ticket est en ligne !');


        return $this->redirectToRoute('ticketing_list');

    }


    return $this->render($this->ticketingTemplates['new'], [

        'form' => $ticketForm->createView(),

    ]);

}


我希望在添加票证时,将“formationId”保存在票证表中。其余的都很好,只有formulaId的注册不行


米琪卡哇伊
浏览 134回答 1
1回答

白衣染霜花

/** * @param UserInterface $user * @param TicketInterface $ticket * @throws \Doctrine\ORM\ORMException * @throws \Doctrine\ORM\OptimisticLockException */public function createTicket(UserInterface $user, TicketInterface $ticket, Formation $formation){    $status = $this->ticketStatusManager->getOpenStatus();    $ticket->setStatus($status)->setFormation($formation)->setAuthor($user)->setPublic(false);    if (!$this->isTicketRestrictionEnabled()) {        $ticket->setPublicAt(new \DateTime())->setPublic(true);    }    $this->persistAndFlush($ticket);}
打开App,查看更多内容
随时随地看视频慕课网APP