在symfony 4中,我Customer
和Title
表:
Customer table:
id INT
name VARCHAR(32)
title_id TINYINT [FK]
Title table:
id INT
code VARCHAR(8)
name VARCHAR(24)
已创建供应商实体:
/**
* Supplier
*
* @ORM\Table(name="supplier", indexes={@ORM\Index(name="title_id", columns={"title_id"})})
* @ORM\Entity
*/
class Supplier
{
/**
* @var int
*
* @ORM\Column(name="id", type="int", nullable=false, options={"unsigned"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=48, nullable=false)
*/
private $name;
/**
* @var \Title
*
* @ORM\ManyToOne(targetEntity="Title")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="title_id", referencedColumnName="id")
* })
*/
private $title;
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getTitle(): ?Title
{
return $this->title;
}
public function setTitle(?Title $title): self
{
$this->title = $title;
return $this;
}
public function __toString()
{
return $this->name;
}
}
还有Title实体:
/**
* Title
*
* @ORM\Table(name="title")
* @ORM\Entity
*/
class Title
{
/**
* @var bool
*
* @ORM\Column(name="id", type="boolean", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="code", type="string", length=8, nullable=false)
*/
private $code;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=24, nullable=false)
*/
private $name;
public function getId(): ?bool
{
return $this->id;
}
public function getCode(): ?string
{
return $this->code;
}
public function setCode(string $code): self
{
$this->code = $code;
return $this;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function __toString()
{
return $this->name;
}
}
这是我的供应商类型:
class SupplierType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('title')
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Supplier::class,
]);
}
}
我的创建表单默认使用console make:crud
生成 - >供应商
问题是:我在创建供应商处的组合框具有相同的标题值:
<select id="supplier_title" name="supplier[title]" class="form-control">
<option value=""></option>
<option value="1" selected="selected">TOKO</option>
<option value="1" selected="selected">TOKO</option>
<option value="1" selected="selected">TOKO</option>
</select>
出了什么问题?
注意:
SupplierBank
与ManyToOne
有Supplier
的关系。组合框数据正常。答案 0 :(得分:0)
我解决了这个难题!对于遇到类似问题的每个人,我都会留下答案。
对于我的情况,我从现有数据库生成实体。我的一些表使用数据类型 tinyint 。使用symfony的拇指规则之一:不要使用TINYINT作为PRIMARY KEY !它将转换为布尔值。因此,当我使用tinyint从表生成实体时,它转换为boolean。当我将所有布尔值重命名为smallint和/或int时,它就解决了!
遗憾的symfony没有tinyint数据类型。虽然,他们有自己的考虑。