有人告訴我,數據庫請求循環使(的foreach)是壞的,但我怎麼可以做其他的方式申請:idiorm數據庫請求
$k1 = ORM::for_table('k1')->find_many();
foreach($k1 as $k){
$k2 = ORM::for_table('k2')->where('id', $k->id)->find_one();
echo $k2->name;
}
有人告訴我,數據庫請求循環使(的foreach)是壞的,但我怎麼可以做其他的方式申請:idiorm數據庫請求
$k1 = ORM::for_table('k1')->find_many();
foreach($k1 as $k){
$k2 = ORM::for_table('k2')->where('id', $k->id)->find_one();
echo $k2->name;
}
使用join
您可以創建相同不使用循環查詢。註釋後
編輯:
<?php
$results = ORM::for_table('k1')
->select('k2.*')
->join('k1_to_k2', array('k1.id', '=', 'k1_to_k2.k1_id'))
->join('k2', array('k1.id', '=', 'k2.id'))
->find_many();
foreach($results as $result){
echo $result->name;
}
以前的答案:
<?php
$results = ORM::for_table('k1')
->select('k2.*')
->join('k2', array('k1.id', '=', 'k2.id'))
->find_many();
foreach($results as $result){
echo $result->name;
}
如果我使用3桌? '$ k1 = ORM :: for_tabe('k1') - > find_many(); ('ki_id',$ ki-> id) - > find_many();其中($ k1爲$ k){0} ('id',$ item-> k2_id) - > find_one();其中('id',$ item-> k2_id) - >其中, } }' – aidron
@aidron答案已更新。 –
嗨@aidron如果這個或任何答案已經解決了你的問題,請點擊複選標記考慮[接受它](http://meta.stackexchange.com/q/5234/179419)。這向更廣泛的社區表明,您已經找到了解決方案,併爲答覆者和您自己提供了一些聲譽。沒有義務這樣做。 –
您應該使用[加入](http://idiorm.readthedocs.io/en/latest/querying.html#加入)爲此。 –