具有多个变量的 Symfony2 toString() 方法
Symfony2 toString() method with multiple variables
我建立了一个实体,它与多个其他 table 数据有关联,将用于填充“dropdown”元素一个表格。
但是,当我尝试打开该页面时,它说我遇到了 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->??????????;
}
}
我不确定我是否可以 return 一个数组,或者必须以某种方式在别处定义它。提前致谢!
__toString()
是PHP的一种神奇方法:
__toString() allows a class to decide how it will react when it is treated like a string. For example, what echo $obj; will print. This method must return a string, as otherwise a fatal E_RECOVERABLE_ERROR level error is emitted.
与Symfony关系不大。我猜你使用了 doctrine entity field types.
之一
默认情况下,实体字段类型会将对象转换为字符串,PHP 会尝试对其调用 __toString()
方法。您可以提供 __toString()
方法,或显式设置应调用的方法(请参阅 the property 文档)。
无论哪种方式,您都需要 return 一个字符串,以便它可以显示在下拉列表中。
可以是任意字符串:
public function __toString()
{
return 'any string';
}
您可以使用以下字段之一:
public function __toString()
{
return $this->title;
}
或者生成更复杂的字符串,甚至使用对象的合作者:
public function __toString()
{
return $this->title . ' (' . $this->category->getName() . ')';
}
确保检查哪个对象实际被转换为字符串。可能是您添加的方法有误class。
我建立了一个实体,它与多个其他 table 数据有关联,将用于填充“dropdown”元素一个表格。
但是,当我尝试打开该页面时,它说我遇到了 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->??????????;
}
}
我不确定我是否可以 return 一个数组,或者必须以某种方式在别处定义它。提前致谢!
__toString()
是PHP的一种神奇方法:
__toString() allows a class to decide how it will react when it is treated like a string. For example, what echo $obj; will print. This method must return a string, as otherwise a fatal E_RECOVERABLE_ERROR level error is emitted.
与Symfony关系不大。我猜你使用了 doctrine entity field types.
之一默认情况下,实体字段类型会将对象转换为字符串,PHP 会尝试对其调用 __toString()
方法。您可以提供 __toString()
方法,或显式设置应调用的方法(请参阅 the property 文档)。
无论哪种方式,您都需要 return 一个字符串,以便它可以显示在下拉列表中。
可以是任意字符串:
public function __toString()
{
return 'any string';
}
您可以使用以下字段之一:
public function __toString()
{
return $this->title;
}
或者生成更复杂的字符串,甚至使用对象的合作者:
public function __toString()
{
return $this->title . ' (' . $this->category->getName() . ')';
}
确保检查哪个对象实际被转换为字符串。可能是您添加的方法有误class。