在foreach循环之外的idiorm数据库请求

时间:2016-08-17 15:14:58

标签: php database idiorm

我被告知数据库请求make in循环(foreach)很糟糕,但我怎么能以其他方式执行此请求:

$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;
}

1 个答案:

答案 0 :(得分:1)

使用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;
}