안녕하세요. 도와 주려고하는 누군가에게 감사드립니다.나는 작동하지 않는 것에 대해 고민 중이다. Symfony 2에서의 많은 관계 ORM과 같은 교리와
저는 Symfony와 doctrine을 처음 접했고, 왜 내 티켓 엔티티가 ManyToMany Realtionship없이 저장되었는지 알 수 없습니다. 나는 열심히 노력했다. 내가 며칠 동안 찾은 것을했지만 마침내 나는 도움이 필요하다. 여기
우리가
티켓
<pre>
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use AppBundle\Entity\Computer;
/**
* @ORM\Entity
* @ORM\Table(name="tickets")
*/
class Ticket {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="integer")
*/
protected $creator;
/**
* @ORM\Column(type="integer")
*/
protected $owner;
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="tickets")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
private $category;
/**
* @ORM\ManyToOne(targetEntity="Type", inversedBy="tickets")
* @ORM\JoinColumn(name="type_id", referencedColumnName="id")
*/
protected $type;
/**
* @ORM\Column(type="string")
*/
protected $subject;
/**
* @ORM\ManyToMany(targetEntity="Computer", inversedBy="tickets", cascade={"persist"})
* @ORM\JoinTable(name="inventory_computer_join",
* joinColumns={@ORM\JoinColumn(name="ticket_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="computer_id", referencedColumnName="id")}
*)
*/
protected $computer;
[...]
/**
* Add computer
*
* @param \AppBundle\Entity\Computer $computer
*
* @return Ticket
*/
public function addComputer(\AppBundle\Entity\Computer $computer)
{
$this->computers[] = $computer;
return $this;
}
/**
* Remove computer
* @param \AppBundle\Entity\Computer $computer
*/
public function removeComputer(\AppBundle\Entity\Computer $computer)
{
$this->computers->removeElement($computer);
}
/**
* Get computers
* @return \Doctrine\Common\Collections\Collection
*/
public function getComputers()
{
return $this->computers;
}
}
</pre>
컴퓨터
<pre>
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use AppBundle\Entity\Ticket;
/**
* @ORM\Entity
* @ORM\Table(name="inventory_computer")
*/
class Computer
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity="Ticket", mappedBy="computer")
*/
protected $tickets;
[...]
/**
* Add ticket
*
* @param \AppBundle\Entity\Ticket $ticket
*
* @return Computer
*/
public function addTicket(\AppBundle\Entity\Ticket $ticket)
{
$this->tickets[] = $ticket;
return $this;
}
</pre>
컨트롤러
<pre>
/**
* @Route("admint/createTicket", name="AdminTicketErstellen")
*/
public function AdminCreateTicketAction(Request $request) {
$ticket = new Ticket;
$form = $this->createForm(TicketType::class, $ticket, array(
'method' => 'GET'
));
$form->handleRequest($request);
if ($form->isSubmitted()) {
$em = $this->getDoctrine()->getManager();
$em->persist($ticket);
$em->flush();
return $this->redirectToRoute('measure_servers');
}
return $this->render('sysadmin/pages/AdminCreateTicket.html.twig', array(
'ticket' => $form->createView(),
)
);
}
</pre>
'app/console doctrine : schema : update --force' 명령 다음에 ** inventory_computer_join ** 테이블을 데이터베이스에 저장 했습니까? ** $ ticket ** 변수를 덤프하면 티켓을 계속 유지하기 전에 연결된 컴퓨터가 있습니까? 정확히 당신의 문제는 어디에 있는가 :-) – Mcsky