我已经构建了一个entitiy,它与多个其他数据表相关联,该表将用于填充表单上的"下拉列表"元素。
但是,当我尝试打开页面时,它说我遇到了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() 允许类决定当它被视为字符串时它将如何反应。例如,什么回声$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() . ')';
}
确保检查哪个对象实际被强制转换为字符串。可能是您在错误的类中添加了该方法。