我正在使用PHP中的遗留项目,而数据库中很少有表格如下所示:
表产品:
+----+-------------+----------------+ |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'];
我的问题是如何在Doctrine中映射它。 我正在研究Symfony 2.6
答案 0 :(得分:0)
您希望在Symfony中添加Entity classes来处理数据库中的数据;将这些视为数据库表本身。
然后使用Doctrine Association Mapping;这会自动处理查找表(如MySQL JOIN'),您只需获取$product
并自动访问$product->getCategory()
或$product->getServices()
。
在Symfony网站上也有一篇关于此的文章,作为一个很好的介绍: http://symfony.com/doc/current/book/doctrine.html#relationship-mapping-metadata
应该足以让你入门。
在旁注中,请考虑upgrading Symfony至v3或至少v2.8,以便在您变得过深之前获得长期支持。