2017-11-12 16 views
0

나는 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- 정상적인 경우 심포니 설명서에 언급되어 있지 않은 이유는 무엇입니까?

답변

1

의심 할 여지없이 정상적인 동작입니다. 나는 EasyAdminbundle로 여러 번 해왔다.

__toString() 메서드를 구현해야합니다. https://symfony.com/doc/current/bundles/EasyAdminBundle/book/edit-new-configuration.html

+0

그래, 난 그 보지 않았다. 하지만 지금은 나를 위해 더 나은 방법은이 필드에 대한 자동 완성을 비활성화하는 것입니다 생각하고 있습니다. 왜냐하면 관계에있는 레코드의 수는 아마도 결국 압도적으로 많을 수 있기 때문입니다. –

+0