Doctrine orm 必须在zend2中返回字符串值。怎么用?
我对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"
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
显然应该返回一个字符串!我想要的是一份活动中所有相关国家的名单……非常感谢您的回复!