我是Symfony的初学者。
我有2个实体:股票和销售。两者都有相关的数据库表。
股票具有以下结构:
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| description | varchar(255) | NO | | NULL | |
| input | int(11) | NO | | NULL | |
| output | int(11) | NO | | NULL | |
| balance | int(11) | NO | | NULL | |
| created | datetime | NO | | NULL | |
| updated | datetime | NO | | NULL | |
| unitcost | double | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
销售具有以下结构:
+------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| cost | double | NO | | NULL | |
| date | datetime | NO | | NULL | |
| profitloss | double | NO | | NULL | |
| sid | int(11) | YES | MUL | NULL | |
+------------+----------+------+-----+---------+----------------+
我正在尝试在Stock和Sales之间建立一对多的关系。
库存是商店中待售商品的列表。销售额是Stock数据库表中任何项目的实际购买记录。
正在显示我的第一个销售项目,我遇到了一个重大问题。
为了显示销售,我的愿景是在两个表之间执行一条SQL语句,其中Sales:sid == Stock:id - 我遇到了新手问题,因为我无法找到直接的方式来做这种我已经习惯了SQL执行。
我该如何开始呢?我想通过Stock表中的获取相关数据打印每笔销售的详细信息。
答案 0 :(得分:1)
Doctrine为您处理这类事情。您可以像One-to-Many Association中那样创建双向一对多关联。 所以你的股票实体就像
class Stock{
...
/**
*@OneToMany(targetEntity="YourBundleNamespace\Entity\Sale", mappedBy="stock")
*
*/
protected $sales;
}
class Sale{
protected $id;
....
/**
*@ManyToOne(targetEntity="YourBundleNameSpace\Entity\Stock", inversedBy="sales")
*@JoinColumn(name="sid", referencedColumnName="id")
*/
protected $stock;
}
然后只需找到您想要的销售实体控制器并致电$sale->getStock()
,即可获得与该促销相关联的Stock
实体。
对于sql Execution doctrine能够执行原始sql,但是使用doctrine的dql和QueryBuilder
会更好。请参阅dql和QueryBuilder