2016-04-15 10 views
0

私はPHPで、従来のプロジェクトで働いていると、データベース内のテーブルの数は、次のようになります。Doctrineのマッピング多くのリンクテーブル

表製品:

 
+----+-------------+----------------+ 
|id | id_category | id_destination | 
+----+-------------+----------------+ 
|1 | 3   | 1    | 
|2 | 2   | 1    | 
+----+-------------+----------------+ 

表カテゴリー:

 
+-------------+----------------+ 
| id   | category_name | 
+-------------+----------------+ 
| 2   | services  | 
| 3   | transport  | 
+-------------+----------------+ 

テーブル「サービス」と「輸送」

 
+-------------+----------------+ +-------------+----------------+ 
| id   | name   | | id   | kilometers  | 
+-------------+----------------+ +-------------+----------------+ 
| 1   | 'foo'   | | 1   | 156   | 
| 2   | 'bar'   | | 2   | 12    | 
+-------------+----------------+ +-------------+----------------+ 

そして、私はIDが1の製品をチェックしたい場所今それが呼び出されます:

$info = SELECT * FROM product WHERE ID = 1; 

$table = SELECT category_name FROM category WHERE ID = $info['id_category']; 

、その後:

SELECT * FROM $table WHERE id = $info['id_destination']; 

私の質問は、私は教義でこれをマッピングされたことができる方法です。 私はSymfony 2.6に取り組んでいます

答えて

0

symfonyにEntity classesを追加してデータベースとの間でデータをやりとりしたいと思っています。これらをデータベーステーブル自体と考えてください。

Doctrine Association Mappingを使用してください。これは自動的に$productを取得し、自動的に$product->getCategory()または$product->getServices()にアクセスできるように、MySQL JOINのようなルックアップテーブルを自動的に処理します。

良い導入として働きsymfony公式サイト過ぎる上、この上の記事があります: http://symfony.com/doc/current/book/doctrine.html#relationship-mapping-metadata

は、あなたが始めるのに十分でなければなりません。

さらに深くなる前に、長期的なサポートのために、upgrading Symfonyをv3、または少なくともv2.8と考えてください。

+0

私はsymfonyのマッピングエンティティを知っていますが、その特別な関連付けをどのようにマッピングするかはわかりません –

関連する問題