【问题标题】:CI framework MySQL queryCI 框架 MySQL 查询
【发布时间】:2013-06-30 15:09:02
【问题描述】:

我是第一次使用 CI 框架,需要一些帮助。

我正在将现有网站迁移到 CI 框架,并逐步按照 CI 的教程进行操作,没有遇到太多麻烦,但是我似乎无法克服一些障碍...

我的数据库表有 2 列 - “国家”和“城市” - 我想在视图文件中返回一个结果,该结果按国家/地区分组所有行,将该国家/地区打印为标题,然后将所有相应的城市打印为相关国家/地区下方的列表。

即。

<h1>England</h1>
<ul>
<li>Liverpool</li>
<li>London</li>
<li>Sheffield</li>
</ul>

而在没有 CI 框架之前,我可以只写一个查询,返回一个结果,重新定义一个变量并抛出一些 if 语句来达到预期的结果 - CI 的 mvc 结构阻止我这样做......

我认为这个谜团的关键在于控制器并创建某种数组来管理数据并在视图文件中使用 - 有人可以帮我举个例子吗?

我现有的控制器是:

<?php
class Home extends CI_Controller {

    public function index()
    {
        $this->load->model('Default_model');
        $data['query'] = $this->Default_model->getResults();
        $this->load->view('page_view', $data);
    }
}

现有的视图文件是:

<?php if (isset($query)):?>
<?php foreach ($query as $row):?>
<h1><?=$row->country?></h1>
<ul>
<li><?=$row->city?></li>
</ul>
<?php endforeach;?>
<?php endif;?>

和型号:

function getResults()
{
    $query = $this->db->query('SELECT * FROM events GROUP BY country, city ORDER BY country, city');
    return $query->result();
}

谁能帮我举个例子,告诉我如何在 CI mvc 结构中处理这种类型的查询?

目前上述代码的返回结果为:

<h1>England</h1>
<ul>
<li>Liverpool</li>
</ul>
<h1>England</h1>
<ul>
<li>London</li>
</ul>
<h1>England</h1>
<ul>
<li>Sheffield</li>
</ul>

谢谢!

【问题讨论】:

  • 请在您的问题中添加$this-&gt;Default_model-&gt;getResults();的数据数组转储
  • 你的意思是这个查询返回的结果是什么? @dianuj
  • 您的逻辑/代码对我来说似乎很好,如果您收到任何错误怎么办?而不是return $query-&gt;result(); 尝试做一个var_dump($query-&gt;result());die(); 看看你是否真的得到任何结果?
  • @user2505513 是的结果
  • @dianuj 见上文,已编辑帖子以包含当前查询结果。

标签: php mysql codeigniter


【解决方案1】:

试试看

<?php 
$country =$query[0]->country;
$index=1;
if (isset($query)):?>
<?php foreach ($query as $row):?>

<?php if($country==$row->country){ 

if($index==1){ ?> 
<h1><?=$row->country?></h1>
  <?php }
  $index++;
 }else{  
  $country=$row->country; 
 $index++;
 ?>
 <h1><?=$row->country?></h1>
<?php } ?>

<ul>
<li><?=$row->city?></li>
</ul>
<?php endforeach;?>
<?php endif;?>

【讨论】:

  • 我曾考虑使用 $i 变量循环,但这不会在视图文件中有太多 php 的情况下损害 mvc 结构吗? @dianuj
  • 首先你的结果数组是错误的,你必须创建一个数组,比如一个国家应该有一个城市数组,然后是其他国家的城市,比如父数组,然后是子数组
  • 好的,我想我明白你的意思 - 但我想确定......你的意思是我的查询应该只返回国家,然后在返回城市的循环中运行第二个查询等于现在的国家?曾经有人建议我不要在查询循环中运行查询循环......这是正确的吗? @dianuj
  • 是的,我想说的是,但如果你不在循环中运行查询,那么你必须在 php 中这样玩
  • 这行不通,小伙子。我无法在模型的第二个查询中定义国家。它只是产生一个关于未定义变量的错误......所以看起来我确实需要像这样玩 php。我相信关键在于控制器并创建某种数组以从模型中的查询返回所需的结果。有人有任何指导吗? @dianuj
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多