У меня есть отношение «многие ко многим» между двумя таблицами в моей базе данных (1 артикель имеет более 1 бестселлера и наоборот), поэтому я создал таблицу ссылок (bestelregel).
Но теперь я хочу создать форму, чтобы я мог добавить новый заказ с несколькими продуктами, но, поскольку я новичок в этом, я не уверен, как это сделать.Я попытался сделать форму для Bestelling сущности, чтобы я мог сделать новый заказ.И попытался добавить продукты в заказ с другой формой (форма на основе таблицы ссылок), но я получил следующую ошибку:
Ожидаемое значение типа "AppBundle \ Entity \ Artikel" для поля ассоциации "AppBundle \ Entity \ Bestelregel # $ bestelordernummer ", вместо этого получил" AppBundle \ Entity \ Bestelling ".
Надеюсь, вы, ребята, можете мне помочь.Может быть, другим способом?
Мой код:
Сущность Artikel
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Artikel
*
* @ORM\Table(name="artikel")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ArtikelRepository")
*/
class Artikel
{
//Mapping naar de database
/**
* @var string
*
* @ORM\Column(name="artikelnummer", type="integer", length=20, unique=true)
* @ORM\Id
* @Assert\Length(
* min = 10,
* max = 10,
* minMessage = "Minimaal 10 karakters",
* maxMessage = "Maximaal 10 karakters"
*)
*/
private $artikelnummer;
/**
* @var string
*
* @ORM\Column(name="omschrijving", type="string", length=255, nullable=true)
*/
private $omschrijving;
/**
* @var string
*
* @ORM\Column(name="specificaties", type="string", length=255, nullable=true)
*/
private $specificaties;
/**
* @var string
*
* @ORM\Column(name="Magazijnlocatie", type="string", length=6)
* @Assert\Regex(
* pattern = "/^20|[0-1]{1}[0-9]{1}\/[A-Z][0]{1}[0-9]{1}|10$/i",
* match=true,
* message="Ongeldige locatie [ERROR1]")
* @Assert\Regex(
* pattern = "/^[2]{1}[1-9]{1}\/[A-Z]{1}[0-9]{1}$/i",
* match=false,
* message="Ongeldige locatie [ERROR2]")
* @Assert\Regex(
* pattern = "/^[3-9]{1}[0-9]{1}\/[A-Z][0-9]{1}$/i",
* match=false,
* message="Ongeldige locatie [ERROR3]")
* @Assert\Regex(
* pattern = "/^[0-1]{1}[0-9]{1}\/[A-Z][1]{1}[1-9]{1}$/i",
* match=false,
* message="Ongeldige locatie [ERROR4]")
* @Assert\Regex(
* pattern = "/^[0-1]{1}[0-9]{1}\/[A-Z][2-9]{1}[0-9]{1}$/i",
* match=false,
* message="Ongeldige locatie [ERROR5]")
* @Assert\Regex(
* pattern = "/^[0-9A-Za-z]+$/i",
* match=false,
* message="Ongeldige locatie [ERROR6]")
* @Assert\Length(
* max = 6,
* maxMessage = "Mag niet meer zijn dan {{ limit }} karakters"
* )
*/
private $magazijnlocatie;
/**
* @var decimal
*
* assert
* @ORM\Column@Column(type="decimal", precision= 10, scale=2, nullable=true)
*/
private $inkoopprijs;
/**
* @var string
*
* @ORM\Column(name="vervangendArtikel", type="string", length=255, nullable=true)
*/
private $vervangendArtikel;
/**
* @var integer
*
* @ORM\Column(name="minimumVoorraad", type="integer", length=20, nullable=true)
*/
private $minimumVoorraad;
/**
* @var integer
*
* @ORM\Column(name="voorraadaantal", type="integer", length=20, nullable=true)
*/
private $voorraadaantal;
/**
* @var integer
*
* @ORM\Column(name="bestelserie", type="integer", length=20, nullable=true)
*/
private $bestelserie;
/**
* @var integer
*
* @ORM\Column(name="verkopen", type="integer", length=20, nullable=true)
*/
private $verkopen;
/**
* @var integer
*
* @ORM\Column(name="gereserveerdeVoorraad", type="integer", length=10, nullable=true)
*/
private $gereserveerdeVoorraad;
/**
* @var integer
*
* @ORM\Column(name="vrijeVoorraad", type="integer", length=10, nullable=true)
*/
private $vrijeVoorraad;
/**
* @var bool
*
* @ORM\Column(name="in_voorraad", type="boolean")
*/
private $inVoorraad;
/**
* @var int
*
* @ORM\OneToMany(targetEntity="Bestelregel", mappedBy="artikelnummer")
*/
private $bestelregels;
public function __construct() {
$this->bestelregels = new ArrayCollection();
}
//**************************************************Set/Get Functies hieronder!*********************************
/**
* Set artikelnummer
*
* @param string $artikelnummer
*
* @return Artikel
*/
public function setArtikelnummer($artikelnummer)
{
$this->artikelnummer = $artikelnummer;
return $this;
}
/**
* Get artikelnummer
*
* @return string
*/
public function getArtikelnummer()
{
return $this->artikelnummer;
}
/**
* Set omschrijving
*
* @param string $omschrijving
*
* @return Artikel
*/
public function setOmschrijving($omschrijving)
{
$this->omschrijving = $omschrijving;
return $this;
}
/**
* Get omschrijving
*
* @return string
*/
public function getOmschrijving()
{
return $this->omschrijving;
}
/**
* Set specificaties
*
* @param string $specificaties
*
* @return Artikel
*/
public function setSpecificaties($specificaties)
{
$this->specificaties = $specificaties;
return $this;
}
/**
* Get specificaties
*
* @return string
*/
public function getSpecificaties()
{
return $this->specificaties;
}
/**
* Set magazijnlocatie
*
* @param string $magazijnlocatie
*
* @return Artikel
*/
public function setMagazijnlocatie($magazijnlocatie)
{
$this->magazijnlocatie = $magazijnlocatie;
return $this;
}
/**
* Get magazijnlocatie
*
* @return string
*/
public function getMagazijnlocatie()
{
return $this->magazijnlocatie;
}
/**
* Set inkoopprijs
*
* @param decimal $inkoopprijs
*
* @return Artikel
*/
public function setInkoopprijs($inkoopprijs)
{
$this->inkoopprijs = $inkoopprijs;
return $this;
}
/**
* Get inkoopprijs
*
* @return decimal
*/
public function getInkoopprijs()
{
return $this->inkoopprijs;
}
/**
* Set vervangendArtikel
*
* @param string $vervangendArtikel
*
* @return Artikel
*/
public function setVervangendartikel($vervangendeArtikel)
{
$this->vervangendArtikel = $vervangendArtikel;
return $this;
}
/**
* Get vervangendArtikel
*
* @return string
*/
public function getVervangendartikel()
{
return $this->vervangendArtikel;
}
/**
* Set minimumVoorraad
*
* @param integer $minimumVoorraad
*
* @return Artikel
*/
public function setMinimumvoorraad($minimumVoorraad)
{
$this->minimumVoorraad = $minimumVoorraad;
return $this;
}
/**
* Get minimumVoorraad
*
* @return integer
*/
public function getMinimumvoorraad()
{
return $this->minimumVoorraad;
}
/**
* Set voorraadaantal
*
* @param integer $voorraadaantal
*
* @return Artikel
*/
public function setVoorraadaantal($voorraadaantal)
{
$this->voorraadaantal = $voorraadaantal;
return $this;
}
/**
* Get voorraadaantal
*
* @return integer
*/
public function getVoorraadaantal()
{
return $this->voorraadaantal;
}
/**
* Set bestelserie
*
* @param integer $bestelserie
*
* @return Artikel
*/
public function setBestelserie($bestelserie)
{
$this->bestelserie = $bestelserie;
}
/**
* Get bestelserie
*
* @return integer
*/
public function getBestelserie()
{
return $this->bestelserie;
}
/**
* Set verkopen
*
* @param integer $verkopen
*
* @return Verkopen
*/
public function setVerkopen($verkopen)
{
$this->verkopen= $verkopen;
return $this;
}
/**
* Get verkopen
*
* @return integer
*/
public function getVerkopen()
{
return $this->verkopen;
}
/**
* Set gereserveerdeVoorraad
*
* @param integer $gereserveerdeVoorraad
*
*/
public function setGereserveerdevoorraad($gereserveerdeVoorraad)
{
$this->gereserveerdeVoorraad= $gereserveerdeVoorraad;
return $this;
}
/**
* Get gereserveerdeVoorraad
*
* @return integer
*/
public function getGereserveerdevoorraad()
{
return $this->gereserveerdeVoorraad;
}
/**
* Set vrijeVoorraad
*
* @param integer $vrijeVoorraad
*
* @return Artikel
*/
public function setVrijevoorraad($vrijeVoorraad)
{
$this->vrijeVoorraad= $vrijeVoorraad;
return $this;
}
/**
* Get vrijeVoorraad
*
* @return integer
*/
public function getVrijevoorraad()
{
return $this->vrijeVoorraad;
}
/**
* @return bool
*/
public function getInVoorraad()
{
return $this->inVoorraad;
}
/**
* @param bool $inVoorraad
*/
public function setInVoorraad($inVoorraad)
{
$this->inVoorraad = $inVoorraad;ity
}
}
Сущность Bestelling
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Bestelling
*
* @ORM\Table(name="bestelling")
* @ORM\Entity(repositoryClass="AppBundle\Repository\BestellingRepository")
*/
class Bestelling
{
/**
* @var int
*
* @ORM\Column(name="bestelordernummer", type="integer", unique=true)
* @ORM\Id
*/
private $bestelordernummer;
/**
* @var string
*
* @ORM\Column(name="leverancier", type="string", length=100, nullable=true)
*/
private $leverancier;
/**
* @var int
*
* @ORM\Column(name="keuringseisen", type="integer", length=4, nullable=true)
*/
private $keuringseisen;
/**
* @var int
*
* @ORM\OneToMany(targetEntity="Bestelregel", mappedBy="bestelordernummer")
*/
private $bestelregels;
public function __construct() {
$this->bestelregels = new ArrayCollection();
}
/**
* Set bestelordernummer
*
* @param integer $bestelordernummer
*
* @return Bestelling
*/
public function setBestelordernummer($bestelordernummer)
{
$this->bestelordernummer = $bestelordernummer;
return $this;
}
/**
* Get bestelordernummer
*
* @return integer
*/
public function getBestelordernummer()
{
return $this->bestelordernummer;
}
/**
* Set leverancier
*
* @param string $leverancier
*
* @return Bestelling
*/
public function setLeverancier($leverancier)
{
$this->leverancier = $leverancier;
return $this;
}
/**
* Get leverancier
*
* @return string
*/
public function getLeverancier()
{
return $this->leverancier;
}
/**
* Set keuringseisen
*
* @param integer $keuringseisen
*
* @return Bestelling
*/
public function setKeuringseisen($keuringseisen)
{
$this->keuringseisen = $keuringseisen;
return $this;
}
/**
* Get keuringseisen
*
* @return integer
*/
public function getKeuringseisen()
{
return $this->keuringseisen;
}
}
Сущность Bestelregel (Таблица ссылок)
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Bestelregel
*
* @ORM\Table(name="bestelregel")
* @ORM\Entity(repositoryClass="AppBundle\Repository\BestelregelRepository")
*/
class Bestelregel
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var int
*
* @ORM\ManyToOne(targetEntity="Artikel", inversedBy="bestelregels")
* @ORM\JoinColumn(name="artikelnummer", referencedColumnName="artikelnummer")
*/
private $artikelnummer;
/**
* @var int
*
* @ORM\ManyToOne(targetEntity="Artikel", inversedBy="bestelregels")
* @ORM\JoinColumn(name="bestelordernummer", referencedColumnName="bestelordernummer")
*/
private $bestelordernummer;
/**
* Set id
*
* @param integer $id
*
* @return Bestelregel
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set artikelnummer
*
* @param integer $artikelnummer
*
* @return Bestelregel
*/
public function setArtikelnummer($artikelnummer)
{
$this->artikelnummer = $artikelnummer;
return $this;
}
/**
* Get artikelnummer
*
* @return integer
*/
public function getArtikelnummer()
{
return $this->artikelnummer;
}
/**
* Set bestelordernummer
*
* @param integer $bestelordernummer
*
* @return Bestelregel
*/
public function setBestelordernummer($bestelordernummer)
{
$this->bestelordernummer = $bestelordernummer;
return $this;
}
/**
* Get bestelordernummer
*
* @return integer
*/
public function getBestelordernummer()
{
return $this->bestelordernummer;
}
}
Форма Bestelling
<?php
namespace AppBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class BestellingType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
//gebruiken wat je nodig hebt, de id hoeft er niet bij als deze auto increment is
$builder
->add('bestelordernummer', IntegerType::class) //naam is b.v. een attribuut of variabele van klant
;
$builder
->add('leverancier', TextType::class) //naam is b.v. een attribuut of variabele van klant
;
$builder
->add('keuringseisen', TextType::class) //naam is b.v. een attribuut of variabele van klant
;
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Bestelling'
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'appbundle_bestelregel';
}
}
Форма Bestelregel (Таблица ссылок)
<?php
namespace AppBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class BestelregelType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
//gebruiken wat je nodig hebt, de id hoeft er niet bij als deze auto increment is
$builder
->add('artikelnummer', EntityType::class, array(
'class' => 'AppBundle:Artikel',
'choice_label' => 'artikelnummer'))
;
$builder
->add('bestelordernummer', EntityType::class, array(
'class' => 'AppBundle:Bestelling',
'choice_label' => 'bestelordernummer'))
;
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Bestelregel'
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'appbundle_bestelregel';
}
}
База данных изображений