私は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のマニュアルにこれが記載されていないのはなぜですか?
はい、私はそれを見ていません。しかし、今私は私にとってより良い方法は、このフィールドのオートコンプリートを無効にすることだと考えています。関係のレコードの数は最終的におそらく圧倒的かもしれないので。 –
私は100million以上のエントリを持ついくつかの飼育場で働いています...しかし、それはボトルネックになるまで...それができるようになります... 1つの問題を一度に:) –