Doctrine orm 必须在zend2中返回字符串值。怎么用?

Doctrine orm 必须在zend2中返回字符串值。怎么用?,doctrine-orm,zend-framework2,zend-form,zend-form-select,Doctrine Orm,Zend Framework2,Zend Form,Zend Form Select,我对zend2表单有问题。我创建了一个实体,它从数据库中获取一些数据并连接一些表 以下是实体: class Campaigns { /** * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") * @ORM\Column(type="integer") */ protected $id; /** * * @ORM\Column(name="campaign_name"

我对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());
    }
我的问题是
受保护的$countries
。如果我在表单中添加属性值,它将给出实体中找不到的“国家”属性

如果我不添加它,而是使用
\uuuuToString()
函数,它会给我一个错误,说明它无法将国家转换为字符串…在
\uuuToString()
函数中,我添加了以下代码:

public function __toString()
{

return $this->countries;

}
谢谢你的帮助


AE

您说您想要一个包含所有相关国家/地区的字符串。以下代码演示了如何实现这一点:

$campaignCountryNames = array();

$campaignCountries = $campaign->getCountries(); 

foreach ($campaignCountries as $country) {
    // I assume your Country entity has a name property
    $campaignCountryNames[] = $country->getName();
}

echo implode(', ', $campaignCountryNames);

您说您想要一个包含所有相关国家的字符串。以下代码演示了如何实现这一点:

$campaignCountryNames = array();

$campaignCountries = $campaign->getCountries(); 

foreach ($campaignCountries as $country) {
    // I assume your Country entity has a name property
    $campaignCountryNames[] = $country->getName();
}

echo implode(', ', $campaignCountryNames);

你想要什么?一个与国家有关的精选元素?活动的所有相关国家/地区的列表?此外,
\uuu toString
显然应该返回一个字符串!我想要的是一份活动中所有相关国家的名单……非常感谢您的回复!你想要什么?一个与国家有关的精选元素?活动的所有相关国家/地区的列表?此外,
\uuu toString
显然应该返回一个字符串!我想要的是一份活动中所有相关国家的名单……非常感谢您的回复!