나는 symfony documentation for associations을 따르고 있으며 Product 및 Category 엔티티를 만들었습니다. 내 제품 엔티티에서Symfony3 일대 다 관계 __toString 오류
내가 가진 :
내 카테고리 엔티티에서/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="products")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
private $category;
내가 가진 : 또한
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>
내가 :
여기/**
* @ORM\OneToMany(targetEntity="Product", mappedBy="category")
*/
private $products;
가 생성 된 테이블처럼 보이게하는 방법 EasyAdmin 번들이 설치되었습니다. 이제는 EasyAdmin으로 가서 'Category'테이블을 열고 행을 삽입하십시오.
Catchable Fatal Error: Object of class AppBundle\Entity\Category could not be converted to string
$ this-> 반환하는 마법 방법 __toString을 추가하여 문제를 해결 할 수 있습니다 : 그럼 난 '제품'테이블에 가서 내가 클릭하면 버튼 '제품 추가'를, 나는 오류 name을 Category 엔티티에 추가하십시오.
질문 :
1- 무엇인가 잘못 되었나요? Category 엔티티에 __toString 메소드를 추가해야하는 이유는 무엇입니까?
2- 정상적인 경우 심포니 설명서에 언급되어 있지 않은 이유는 무엇입니까?
그래, 난 그 보지 않았다. 하지만 지금은 나를 위해 더 나은 방법은이 필드에 대한 자동 완성을 비활성화하는 것입니다 생각하고 있습니다. 왜냐하면 관계에있는 레코드의 수는 아마도 결국 압도적으로 많을 수 있기 때문입니다. –
100million 이상의 항목을 포함하는 일부 필드는 작동합니다 ...하지만 병목 현상이 될 때까지 기다려 드리겠습니다 ... 한 번에 한 가지 문제가 있습니다 :) –