2015-01-11 3 views
0

Я новичок в Symfony, поэтому, пожалуйста, извините меня, если я не очень хорошо объясню это.Symfony2 multitable join issues

У меня есть 2 объекта: склад и продажа. Оба имеют связанные таблицы базы данных.

Stock имеет следующую структуру:

+-------------+--------------+------+-----+---------+----------------+ 
| 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 |    | 
+------------+----------+------+-----+---------+----------------+ 

Я пытаюсь создать ОДНУ => МНОГО отношения между акциями и продажами.

Акции - это список всех товаров для продажи в магазине. Продажи - это учет фактических покупок любого товара в таблице базы данных запаса.

В процессе отображения моего первого элемента продаж у меня возникла серьезная проблема.

Чтобы показать Продажи, мое видение заключалось в том, чтобы выполнить инструкцию SQL между обеими таблицами, где Sales: sid == Stock: id - Я столкнулся с проблемами новичков, поскольку я не мог найти прямой способ сделать вид Выполнение SQL, к которому я привык.

Может кто-нибудь дать мне какое-то направление, пожалуйста? - Я хочу распечатать информацию о каждой продаже путем получения связанных данных из таблицы запасов.

ответ

0

Doctrine обрабатывает подобные вещи для вас. Вы можете создать двунаправленную ассоциацию «один ко многим», как в One-to-Many Association. так Ваш запас Entity будет как

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; 

} 

затем просто найти нужный торговцем Entity Controller и вызвать $sale->getStock() и вы получите Stock Entity, связанным с этой продажей.

Для sql Доктрина исполнения имеет возможность выполнять необработанный sql, но лучше использовать dql доктрины и QueryBuilder. см. dql и QueryBuilder

+0

спасибо. У меня возникли трудности с настройкой правильно. – sisko