我有兩個表。一個是訂單,一個是訂單。這些表是這樣的:查找PropelCollection中的特定行
訂購:
+----------+---------------+------------+
| orderID | orderNumber | clientID |
+----------+---------------+------------+
| 1 | abc123 | 2 |
| 2 | orderX | 7 |
| 3 | Joe9 | 2 |
| 4 | Order4 | 2 |
+----------+---------------+------------+
OrderPref
+----------+----------+-------------+
| orderID | prefID | prefValue |
+----------+----------+-------------+
| 1 | 1 | $100 |
| 1 | 2 | 123 |
| 1 | 3 | $35 |
| 2 | 1 | $600 |
| 2 | 2 | 876 |
| 2 | 3 | $44 |
+----------+----------+-------------+
我想是每一個訂單,得到prefValue
特定什麼。目前,這是我在做什麼:
$orders = OrdersQuery::create()->filterByClientID(2)->find();
foreach($orders as $o){
$prefs = $o->getOrderPrefs();
foreach($prefs as $p){
if($p->getPrefID() === 2){
echo $p->getPrefValue();
break;
}
}
}
這工作,但需要有一個更好的方式來獲得一個行我想每個訂單沒有通過所有的首選項循環。
我知道這不起作用,但有沒有這樣的事情?
$orders = OrdersQuery::create()->filterByClientID(2)->find();
foreach($orders as $o){
// This obviously doesn't work, so is there a short way to do this?
echo $o->getOrderPrefs()->filterByPrefID(2)->getPrefValue();
}
我讀的文檔,發現一個->search()
方法,但我不知道如何使用它。
$orders = OrdersQuery::create()->filterByClientID(2)->find();
foreach($orders as $o){
// How can I search for the row with the prefID I want?
echo $o->getOrderPrefs()->search()->getPrefValue();
}
問題是,這會返回給我'訂單',每個''getOrderPrefs'方法;現在我們又回到了最初的問題。我如何從這個查詢中獲得'prefValue'? – 2013-05-13 22:23:22
啊好點 - 更新。 – halfer 2013-05-13 22:27:23
那麼,最好的方法是預先選擇我想使用的列? – 2013-05-13 22:30:21