【问题标题】:idiorm database request outside of foreach loopforeach 循环之外的 idiorm 数据库请求
【发布时间】:2016-08-17 15:14:57
【问题描述】:

有人告诉我,循环中的数据库请求(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;
}

【问题讨论】:

  • 您应该为此使用join

标签: php database idiorm


【解决方案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;
}

【讨论】:

  • 如果我使用 3 张桌子? $k1 = ORM::for_tabe('k1')-&gt;find_many(); foreach($k1 as $k){ $con = ORM::for_table(k1_to_k2)-&gt;where('ki_id', $ki-&gt;id)-&gt;find_many(); foreach($con as $item){ $k2 = ORM::for_table('k2')-&gt;where('id', $item-&gt;k2_id)-&gt;find_one(); } }
  • 嗨@aidron,如果这个或任何答案已经解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
猜你喜欢
  • 1970-01-01
  • 2019-08-17
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多