我有两个实体Ventes和Article有多对多的关系,在实体关系中是ventes_article有attribut“quantite”:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Ventes
*
* @ORM\Table(name="ventes")
* @ORM\Entity(repositoryClass="AppBundle\Repository\VentesRepository")
*/
class Ventes
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
#......................
/**
* Many Articles have Many paks.
* @ORM\ManyToMany(targetEntity="Article", inversedBy="Ventes")
* @ORM\JoinTable(name="ventes_article")
*/
private $articles;
/**
* Add article
*
* @param \AppBundle\Entity\Article $article
*
* @return Ventes
*/
public function addArticle(\AppBundle\Entity\Article $article)
{
$this->articles[] = $article;
return $this;
}
/**
* Remove article
*
* @param \AppBundle\Entity\Article $article
*/
public function removeArticle(\AppBundle\Entity\Article $article)
{
$this->articles->removeElement($article);
}
/**
* Get articles
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getArticles()
{
return $this->articles;
}
#.............................
#..........
}
这是我的实体文章:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Article
*
* @ORM\Table(name="article")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ArticleRepository")
*/
class Article
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* Many packs have Many article.
* @ORM\ManyToMany(targetEntity="Ventes", mappedBy="Article")
* @ORM\JoinTable(name="ventes_article")
*/
private $ventes;
public function __construct() {
$this->ventes = new \Doctrine\Common\Collections\ArrayCollection();
$this->packs = new \Doctrine\Common\Collections\ArrayCollection();
}
#/............
/**
* Add vente
*
* @param \AppBundle\Entity\Ventes $vente
*
* @return Article
*/
public function addVente(\AppBundle\Entity\Ventes $vente)
{
$this->ventes[] = $vente;
return $this;
}
/**
* Remove vente
*
* @param \AppBundle\Entity\Ventes $vente
*/
public function removeVente(\AppBundle\Entity\Ventes $vente)
{
$this->ventes->removeElement($vente);
}
/**
* Get ventes
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getVentes()
{
return $this->ventes;
}
}
在我的班级VentesAdmin
我有:
<?php
namespace AppBundle\Admin;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Sonata\AdminBundle\Route\RouteCollection;
class VentesAdmin extends AbstractAdmin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->with('Acticles', array('class' => 'col-md-12'))
->add('articles', 'sonata_type_model', array(
'class' => 'AppBundle\Entity\Article',
'property' => 'reference',
'multiple' => true,
'required' => false,
))
->end()
;
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
}
protected function configureListFields(ListMapper $listMapper)
{
}
protected function configureShowFields(ShowMapper $showMapper)
{
}
}
结果 :
但我想用同一篇文章的自定义属性显示此结果:
你能帮助我吗 ??
所以,在这种情况下,我们有一个集合。
谓语:
每篇文章都属于不同的Venteses,One Ventes包含许多不同的文章。
这是多对多的。每篇文章都有不同的属性。为此,我们必须使用
sonata_type_collection
configureFormFields
函数的示例:
class OwnerAdmin extends AbstractAdmin
{
// ...
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('articles', 'sonata_type_collection', [
'required' => false,
'label' => 'Article',
'btn_add' => true,
'btn_catalogue' => 'admin',
'type_options' => [
'delete' => true,
],
], [
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'id',
'allow_delete' => true,
'placeholder' => $this->trans('admin.placeholder.no_article'),
])
;
}
}