用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1742|回复: 4
收起左侧

[版本 3.x] 初学者关于模型中调取方法的问题?

[复制链接]
发表于 2016-10-9 17:51:18 | 显示全部楼层 |阅读模式
问题:比如现在有一个表news,字段:id,title(标题),cid(车型id),我现在需要显示字段,id,文章标题,车型名称(根据news表中的cid到车型表中cars中读取车型名称)应该怎么操作,是在模型操作中再写一个方法用于读取cars表名称的方法吗,有点迷糊了,现有模型方法
public function get_news($slug = FALSE)
        {
               
                        $query = $this->db->get('newslist');
                        return $query->result_array();

               
        }


现在返回的记录集只是cid,我想返回车型名称怎么操作,请各位大神求解?不能用连表查询,因为可能还会有别的其他表的id值,我之前没用框架的时候是这样写的,循环记录集的时候直接调用一个方法把车型名称读取出来然后再放到数组当中,
while ($row=mssql_fetch_array($rsa)) {
                          
                                  $sjzxlist[$ii]=$row;
                                  $sjzxlist[$ii]["carname"]=car_name($row['cid']);                       
                                }

                return  $sjzxlist;

发表于 2016-10-9 19:29:47 | 显示全部楼层
你的需求如果是按照数据库范式来做,就是要做连表查询,也就是 inner join。如果还需要别的信息也是要做 inner join。

如果从性能方面考虑,那你就要做数据冗余,比如车型名称这个字段每个需要的表都放一份,这样就不需要连表查询了,当然这些都是数据库知识,跟 PHP 没有关系了。
发表于 2016-10-9 23:08:38 | 显示全部楼层
不使用join,好像可以在你的模型里加载另一个car的模型,然后在传这个cid给car模型里的方法,取出名称
 楼主| 发表于 2016-10-10 09:42:50 | 显示全部楼层
萧然 发表于 2016-10-9 23:08
不使用join,好像可以在你的模型里加载另一个car的模型,然后在传这个cid给car模型里的方法,取出名称 ...

car的模型我是不是应该在news控制器里加载,而不是在news的模型里加载吧?

本版积分规则