我有 3 个实体。Customers
, Products
, 和Purchases
.
应该能够通过单击添加另一个购买按钮来添加新的购买表格。每个购买都是数据库中的一个单独的行。
我尝试使用一个集合来为客户的现有购买填充/添加必要数量的表格,但我不知道如何有一个按钮来添加额外的购买表格。此外,添加新客户时,不会显示购买表格。
我已经坚持了好几天了!!请帮忙
创建如下表单的最佳方法是什么:
添加/编辑新客户
客户资料
名字
姓
电子邮件
购买 [添加另一个购买按钮]
- 选择产品(用户服务从产品实体中检索的下拉菜单)- 输入数量
- 选择产品(用户服务从产品实体中检索的下拉菜单)- 输入数量
- 选择产品(用户服务从产品实体中检索的下拉菜单)- 输入数量
[添加另一个购买按钮]
CustomersType 类
class CustomersType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('first_name')
->add('last_name')
->add('email')
->add('purchases', 'collection', array(
'type' => new PurchasesType(),
'allow_add' => true,
))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'My\Bundle\MyBundle\Entity\Customers',
));
}
public function getName()
{
return 'customers';
}
}
PurchasesType 类
class PurchasesType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('products', 'entity', array(
'class' => 'My\Bundle\MyBundle\Entity\Products',
'query_builder' => function ($repository) { return $repository->createQueryBuilder('p')->orderBy('p.name', 'ASC'); }
))
->add('quantity')
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'My\Bundle\MyBundle\Entity\Purchases',
));
}
public function getName()
{
return 'purchases';
}
}
客户类
class Customers
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string")
*/
private $first_name;
/**
* @ORM\Column(type="string")
*/
private $last_name;
/**
* @ORM\Column(type="string")
*/
private $email;
/**
* @ORM\ManyToOne(targetEntity="Users", inversedBy="customers")
* @ORM\JoinColumn(name="users", referencedColumnName="id")
*/
private $users;
/**
* @ORM\OneToMany(targetEntity="Purchases", mappedBy="customers")
*/
private $purchases;
}
产品实体
class Products
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string")
*/
private $name;
/**
* @ORM\Column(type="decimal", precision=10, scale=2)
*/
private $price = 0.0;
/**
* @ORM\OneToMany(targetEntity="Purchases", mappedBy="products")
*/
private $purchases;
/**
* @ORM\ManyToOne(targetEntity="Users", inversedBy="products")
* @ORM\JoinColumn(name="users", referencedColumnName="id")
*/
private $users;
}
采购实体
class Purchases
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="decimal", precision=10, scale=2)
*/
private $price;
/**
* @ORM\Column(type="integer")
*/
private $quantity;
/**
* @ORM\ManyToOne(targetEntity="Products", inversedBy="purchases")
* @ORM\JoinColumn(name="products", referencedColumnName="id")
*/
private $products;
/**
* @ORM\ManyToOne(targetEntity="Customers", inversedBy="purchases")
* @ORM\JoinColumn(name="fans", referencedColumnName="id")
*/
private $customers;
}