0
私は、3つのテーブルがrealated持ってここにinProducto、inProveedorとInProveedorProducto、私のrelashionship:フォームのエンティティフィールドの値を設定するにはどうすればよいですか? Symfony2の
inProveedorProducto:
class InProveedorProducto
{
/**
* @ORM\ManyToOne(targetEntity="InProducto", inversedBy="InProveedorProducto")
* @ORM\JoinColumn(name="id_producto", referencedColumnName="id_producto")
*/
protected $producto;
/**
* @ORM\ManyToOne(targetEntity="InProveedor", inversedBy="InProveedorProducto")
* @ORM\JoinColumn(name="id_proveedor", referencedColumnName="id")
*/
protected $proveedor;
InProveedor:
class InProveedor
{
/**
* @ORM\OneToMany(targetEntity="InProveedorProducto", mappedBy="InProveedor", cascade={"persist"})
*/
protected $proveedorProducto;
public function __construct()
{
$this->proveedorProducto = new ArrayCollection();
}
そしてInProducto:
class InProducto
{
/**
* @ORM\OneToMany(targetEntity="InProveedorProducto", mappedBy="InProducto", cascade={"persist"})
*/
protected $producto;
public function __construct()
{
$this->producto = new ArrayCollection();
}
私の問題は、私はhavですe InProveedorProductoの新しいフォームを開きますが、idProveedorフィールドは事前にユーザーを選択しておく必要があります。
私のコントローラ:私はデフォームを開くと
public function newAction()
{
$entity = new InProveedorProducto();
$form = $this->createCreateForm($entity);
$form->get('idProveedor')->setData(1);
return $this->render('NivalInventarioBundle:InProveedorProducto:new.html.twig', array(
'entity' => $entity,
'form' => $form->createView(),
));
}
、idProveedorある最初のフィールドは、我々はidProductoを選択して、価格を入れて数1
を記入しますが、表示されます作成しよう:
エラー:
An exception occurred while executing 'INSERT INTO in_proveedor_producto (id_proveedor, id_producto, precio_compra) VALUES (?, ?, ?)' with params [null, 21, 1]:
それはのように思えますidProveedorはNULLになります。
マイinProveedorProductoタイプ:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('idProveedor')
->add('producto', 'entity', array(
'class' => 'NivalInventarioBundle:InProducto',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.nombre', 'ASC');
},
'choice_label' => 'nombre',
'by_reference' => true,
'expanded' => false,
'placeholder' => 'Seleccione una opción',
'mapped' => true,
'multiple' => false
))
->add('precioCompra')
;
私を助けてください。
よろしく、
私は、コードを変更しましたが、私はこのエラーを取得: 「キャッチできる致命的なエラー:オブジェクトクラスのニーバル\ InventarioBundle \エンティティ\ InProveedorは、文字列に変換することができませんでした」 –
InProveedorクラスにメソッド__toString()を追加するだけです。あなたが必要とするいくつかの最も重要なフィールドを返すべきです(例:fe name) –