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自动完成。当字段与具有大量数据库记录的实体相关时,此类型有助于提高后端性能请参见此处的文档