Symfony3一对多关系\uuu到字符串错误

Symfony3一对多关系\uuu到字符串错误,symfony,doctrine,associations,entities,Symfony,Doctrine,Associations,Entities,我遵循,我创建了产品和类别实体 在我的产品实体中,我有: /** * @ORM\ManyToOne(targetEntity="Category", inversedBy="products") * @ORM\JoinColumn(name="category_id", referencedColumnName="id") */ private $category; /** * @ORM\OneToMany(targetEntity="Product", mappedBy="categ

我遵循,我创建了产品和类别实体

在我的产品实体中,我有:

/**
 * @ORM\ManyToOne(targetEntity="Category", inversedBy="products")
 * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
 */
private $category;
/**
 * @ORM\OneToMany(targetEntity="Product", mappedBy="category")
 */
private $products;
在我的类别实体中,我有:

/**
 * @ORM\ManyToOne(targetEntity="Category", inversedBy="products")
 * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
 */
private $category;
/**
 * @ORM\OneToMany(targetEntity="Product", mappedBy="category")
 */
private $products;
以下是生成的表的外观:

mysql> show create table product \G
*************************** 1. row ***************************
       Table: product
Create Table: CREATE TABLE `product` (
  `id` bigint(20) unsigned NOT NULL,
  `category_id` int(10) unsigned DEFAULT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `details` text COLLATE utf8_unicode_ci COMMENT '(DC2Type:json_array)',
  PRIMARY KEY (`id`),
  KEY `IDX_D34A04AD12469DE2` (`category_id`),
  CONSTRAINT `FK_D34A04AD12469DE2` FOREIGN KEY (`category_id`) REFERENCES `category` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
1 row in set (0.00 sec)

mysql> show create table category \G
*************************** 1. row ***************************
       Table: category
Create Table: CREATE TABLE `category` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `parent_id` int(10) unsigned DEFAULT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
1 row in set (0.00 sec)

mysql>
我还安装了EasyAdmin包。现在,我转到EasyAdmin并打开“Category”表并插入一行。然后我转到“产品”表,当我单击“添加产品”按钮时,我得到错误:

Catchable Fatal Error: Object of class AppBundle\Entity\Category could not be converted to string
可以通过添加将$this->name返回到Category实体中的神奇方法u_toString来修复此问题

问题:

我做错什么了吗?为什么我需要将uuu toString方法添加到类别实体


2-如果这是正常的,为什么symfony手册中没有提到这一点?

毫无疑问,这是正常的行为。我用EasyAdminbundle做过很多次

您必须实现
\uu toString()
方法

将显示表示与另一实体关联的字段 作为列表。因此,您必须定义_toString() 在条令关系中使用的任何实体中的PHP方法。 否则,您将看到一条错误消息,因为后端无法运行 将相关对象表示为字符串


它在这里的文档中:

毫无疑问,这是正常的行为。我用EasyAdminbundle做过很多次

您必须实现
\uu toString()
方法

将显示表示与另一实体关联的字段 作为列表。因此,您必须定义_toString() 在条令关系中使用的任何实体中的PHP方法。 否则,您将看到一条错误消息,因为后端无法运行 将相关对象表示为字符串

它在这里的文档中:

两件事:

1) 将_toString()方法添加到关系“多”端的实体,该关系返回标识该实体的字符串

2) 请确保_toString()方法在任何情况下都返回字符串,即使实体完全为空。通常必须初始化_toString()作为空字符串返回的属性

例如:

private $name = ''; // initialize $name as an empty string

public function __toString()
{
    return $this->name; // which is a string in any circumstance
}
两件事:

1) 将_toString()方法添加到关系“多”端的实体,该关系返回标识该实体的字符串

2) 请确保_toString()方法在任何情况下都返回字符串,即使实体完全为空。通常必须初始化_toString()作为空字符串返回的属性

例如:

private $name = ''; // initialize $name as an empty string

public function __toString()
{
    return $this->name; // which is a string in any circumstance
}

是的,我没看到。但是现在我想对我来说更好的方法是禁用这个字段的自动完成。因为这段关系中的记录数量最终可能会非常庞大。如果我已经为名单中包含3000多名儿童的项目工作过,而我没有注意到任何显著的绩效下降。我将与一些有超过1亿条记录的Feld一起工作。。。但我会让它成为一个瓶颈…一次一个问题:)然后您可以强制EasyAdminBundle只使用类型为“easyadmin\u autocomplete”的ajax自动完成。当字段与具有大量数据库记录的实体相关时,这种类型有助于提高后端性能。请参见此处的文档。是的,我没有看到。但是现在我想对我来说更好的方法是禁用这个字段的自动完成。因为这段关系中的记录数量最终可能会非常庞大。如果我已经为名单中包含3000多名儿童的项目工作过,而我没有注意到任何显著的绩效下降。我将与一些有超过1亿条记录的Feld一起工作。。。但我会让它成为一个瓶颈…一次一个问题:)然后您可以强制EasyAdminBundle只使用类型为“easyadmin\u autocomplete”的ajax自动完成。当字段与具有大量数据库记录的实体相关时,此类型有助于提高后端性能请参见此处的文档