Я построил права, которое связано с несколькими таблицами данных, которые будут использоваться для заполнения «падатьэлемент на форме.
Тем не менее, когда я пытаюсь открыть страницу, он говорит, что у меня есть toString()
ошибка. Я обращался с этим раньше с помощью единой сущности, но я не знаю, как справиться с этим в системе множественных отношений.
class Articles
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255, nullable=false)
*/
private $title;
/**
* @var string
*
* @ORM\Column(name="content", type="text", nullable=false)
*/
private $content;
/**
* @var \DateTime
*
* @ORM\Column(name="datetime", type="datetime", nullable=false)
*/
private $datetime;
/**
* @ORM\ManyToOne(targetEntity="ArticlesCategory", inversedBy="articles")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
private $category;
/**
* @var string
*
* @ORM\Column(name="path", type="string", length=255, nullable=false)
*/
private $path;
/**
* @ORM\ManyToOne(targetEntity="ArticlesAuthor", inversedBy="articles")
* @ORM\JoinColumn(name="author_id", referencedColumnName="id")
*/
private $author;
/**
* @ORM\ManyToOne(targetEntity="Matches", inversedBy="articles")
* @ORM\JoinColumn(name="match_id", referencedColumnName="id")
*/
private $match;
public function __toString()
{
return $this->??????????;
}
}
Я не уверен, могу ли я вернуть массив или как-то определить его в другом месте. Заранее спасибо!
__toString()
один из магических методов PHP:
__toString () позволяет классу решать, как он будет реагировать, когда обрабатывается как строка. Например, что echo $ obj; напечатает. Этот метод должен возвращать строку, так как в противном случае выдается фатальная ошибка уровня E_RECOVERABLE_ERROR.
Это имеет мало общего с Symfony. Я предполагаю, что вы используете один из типы полей сущности доктрины.
По умолчанию тип поля сущности приведёт объект к строке, а PHP попытается вызвать __toString()
метод на это. Вы можете предоставить __toString()
метод, или явно установите метод, который должен быть вызван вместо этого (см. недвижимость документы).
В любом случае вам нужно вернуть строку, чтобы она могла отображаться в раскрывающемся списке.
Это может быть любая строка:
public function __toString()
{
return 'any string';
}
Вы можете использовать одно из полей:
public function __toString()
{
return $this->title;
}
Или генерируйте более сложные строки, даже используйте соавторов вашего объекта:
public function __toString()
{
return $this->title . ' (' . $this->category->getName() . ')';
}
Удостоверьтесь, чтобы проверить, какой объект фактически приводится к строке. Возможно, вы добавляете метод в неправильный класс.
Других решений пока нет …