zend2 フォームに問題があります。データベースからいくつかのデータを取得し、いくつかのテーブルを結合するエンティティを作成しました...
ここにエンティティがあります:
class Campaigns
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/**
*
* @ORM\Column(name="campaign_name", type="string")
*
*/
protected $campaigns;
/**
* @var mixed
*
* @ORM\ManyToMany(targetEntity="Application\Entity\Countries", cascade={"persist"}, orphanRemoval=false)
* @ORM\JoinTable(name="campaigns_countries",
* joinColumns={@ORM\JoinColumn(name="campaign_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="country_id", referencedColumnName="id", onDelete="CASCADE")}
* )
*/
protected $countries;
このコードの下には、getter と setter、construct 関数、add と remove 関数があります。
どうぞ:
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
return $this;
}
public function getCampaigns()
{
return $this->campaigns;
}
public function setCampaigns($campaigns)
{
$this->campaigns = $campaigns;
return $this;
}
public function addCampaigns($campaigns = null)
{
foreach ($campaigns as $c) {
if (!$this->campaigns->contains($c)) {
$this->campaigns->add($c);
}
}
}
public function removeCampaigns($campaigns)
{
foreach ($campaigns as $c) {
if ($this->campaigns->contains($c)) {
$this->campaigns->removeElement($c);
}
}
}
public function getCountries()
{
return $this->countries;
}
public function setCountries($countries)
{
$this->countries = $countries;
return $this;
}
public function addCountries($countries = null)
{
foreach ($countries as $c) {
if (!$this->countries->contains($c)) {
$this->countries->add($c);
}
}
}
public function removeCountries($countries)
{
foreach ($countries as $c) {
if ($this->countries->contains($c)) {
$this->countries->removeElement($c);
}
}
} //construct for countries
public function __construct()
{
$this->setCountries(new ArrayCollection());
}
私の問題はprotected $countries
. プロパティ値をフォームに追加すると、エンティティに見つからない「countries」プロパティが表示されます。
追加せずに__toString()
関数を使用すると、国を文字列に変換できなかったというエラーが表示されます...__toString()
関数に次のコードを追加しました。
public function __toString()
{
return $this->countries;
}
お世話になりました!
AE