【问题标题】:select menu and inside menu active record选择菜单和内部菜单活动记录
【发布时间】:2015-01-10 15:07:20
【问题描述】:

我有一个名为 menu 的表:

用户 |编号 |家长 |标题 |链接

parent - 包含父菜单的 ID(如果 0 表示没有父菜单,其他表示它是子菜单)

id - 自增整数

title,link - 用于显示菜单

我想通过 SELECT 活动记录 (codeignaotr) 获取这些数据,但我不知道该怎么做。

我会使用这样的东西(没有检查这个代码,它只是为了举例!): - 不在活动记录中

    $result=$mysqli->query("SELECT `id`,`parent`,`text`, `link` FROM `menu` where `user`=$user);
    while($row=mysqli_fetch_assoc($result)){
        $id=$row['id'];
        $text=$row['text'];                             
        $link=$row['link'];
        $subs=0;

        if($result2=$mysqli->query("SELECT `id`,`text`, `link` FROM `menu` WHERE `parent`=$id")){
            while($row2=mysqli_fetch_assoc($result2)){  
                $id_sub[]=$row['id'];
                $text_sub[]=$row['text'];                               
                $link_sub[]=$row['link'];
            ++$subs;
            }//query
        }//if   

    }//query 

以这种格式获取所有菜单数组的最佳方法是什么:

$menu['title']

$menu['链接']

$menu['sub']['title'] (等等)

是否有 codeigantor 活动记录?

【问题讨论】:

  • 你没有使用activerecord试试这个:ellislab.com/codeigniter/user-guide/database/active_record.html
  • 我知道那个例子不是活动记录...我问如何在活动记录中做到这一点...我已经阅读了这篇文章
  • 所以你不明白怎么办?
  • 在我的示例中,第二个查询在第一个结果中,我如何在活动记录中做到这一点?

标签: php mysql codeigniter activerecord menu


【解决方案1】:

试试这个可能会有帮助:

$this->db->select('id,parent,text,link');
$this->db->from('menu');
$this->db->where('user',$user);
$query = $this->db->get();
$addrows = $query->result();
foreach($allrows as $onerow){
    $this->db->select('id,text,link');
    $this->db->from('menu');
    $this->db->where('parent',$onerow->id);
    $query = $this->db->get();
    $subrows[] = $query->result();
}
print_r($subrows);

它可能是这样的,但你需要改进它。看起来您正在将您的 id 与您的第二个查询中的 parent 字段进行比较,所以如果它是错误的,请改进它。

【讨论】:

  • 您的代码需要一些修复,但它确实帮助我找到了我想要的东西。谢谢
【解决方案2】:

我只是将您的 mysql 查询转换为活动记录....希望这对您有所帮助。 第一个查询:

$result = $this->db->select('id, parent, text, link')->where('user', $user)->from('menu')->get()->result();

第二个查询:

$result2 = $this->db->select('id, text, link')->where('parent', $id)->from('menu')->get()->result(); 

【讨论】:

  • 在我的示例中,第二个查询在第一个查询中,我该怎么做?
猜你喜欢
  • 2019-08-25
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 2012-03-08
  • 1970-01-01
  • 2011-05-26
  • 2012-10-20
相关资源
最近更新 更多