Должен вернуть строковое значение в zend2. Как?
У меня проблема с формой 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;
Ниже этого кода находятся методы получения и установки, функция построения, функция добавления и удаления.
Вот они:
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
, Если я добавляю в форму значение свойства, это дает мне свойство "страны", не найденное в объекте.
Если я не добавлю его, а вместо этого использую __toString()
Функция выдает ошибку, утверждая, что она не может преобразовать страны в строку... в __toString()
Функция я добавил следующий код:
public function __toString()
{
return $this->countries;
}
Спасибо за твою помощь!
AE
1 ответ
Решение
Вы говорите, что хотите строку, содержащую все связанные страны. Следующий код демонстрирует, как вы могли бы достичь этого:
$campaignCountryNames = array();
$campaignCountries = $campaign->getCountries();
foreach ($campaignCountries as $country) {
// I assume your Country entity has a name property
$campaignCountryNames[] = $country->getName();
}
echo implode(', ', $campaignCountryNames);