映射许多链接表的条令


Doctrine mapping many linked tables

我正在使用PHP中的遗留项目,数据库中的一些表如下所示:

表产品:

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

表类别:

+-------------+----------------+|id |类别名称|+-------------+----------------+|2|服务||3|运输|+-------------+----------------+

表"服务"answers"运输"

+-------------+----------------++-------------+----------------+|id |名称| | id |公里|+-------------+----------------++-------------+----------------+|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

您希望在Symfony中添加Entity类来处理数据库中的数据;将这些视为数据库表本身。

然后使用条令关联映射;这会自动处理查找表(如MySQL JOIN),允许您简单地获取$product并自动访问$product->getCategory()$product->getServices()

Symfony网站上也有一篇关于这一点的文章,作为一个很好的介绍:http://symfony.com/doc/current/book/doctrine.html#relationship-映射元数据

应该足以让你开始。

顺便说一句,在深入研究之前,可以考虑将Symfony升级到v3或至少v2.8,以获得长期支持