2017-11-12 5 views
0

私はsymfony documentation for associationsに従っており、Productエンティティとカテゴリエンティティを作成しました。私は私のカテゴリーのエンティティでsymfony3の1対多の関係__toStringエラー

/** 
* @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 - >返すマジックメソッド__toStringを追加することによって、問題を解決することが可能である。そして、私は「製品」テーブルに行き、私は上のボタンをクリックすると「製品の追加]を、私はエラーを取得します名前をカテゴリエンティティに追加します。

質問:

1-何か問題がありますか? Categoryエンティティに__toStringメソッドを追加する必要があるのはなぜですか?

2これが正常であれば、symfonyのマニュアルにこれが記載されていないのはなぜですか?

答えて

1

正常な動作であることは間違いありません。 EasyAdminbundleで何度もやったことがあります。

__toString()メソッドを実装する必要があります。 https://symfony.com/doc/current/bundles/EasyAdminBundle/book/edit-new-configuration.html

+0

はい、私はそれを見ていません。しかし、今私は私にとってより良い方法は、このフィールドのオートコンプリートを無効にすることだと考えています。関係のレコードの数は最終的におそらく圧倒的かもしれないので。 –

+0