tp5中使用模型进行查询

 余温
2017年08月11日 09时59分
 0


class   Article    extends    Model
{
    public function   tags()          {
        // 用户HAS  ONE档案关联   u_id附表中的ID   id主表中的ID
        return $this->hasMany('tags','u_id','id');
    }
    public function   tag()           {
        return $this->belongsToMany('tag',    'tags','tag_id','u_id');
    }
}

//Article 是数据库中的表名(不包含前缀) 

hasMay()两个表之间的关联 tags 模型名称 u_id关联的外键  ID关联的主键


belongsToMang()三个表的关联 'tag' 模型名称  tags中间表名(老版本这个需要表名的全写) 

tag_id 关联外键    u_id关联模型关联键

在控制器中使用

首先引入引命名空间

use app\index\model\Article;

$res=Article::with('tag')->where('id','neq','1')->field('title,id')->find()->toArray();

这样查询出来的数据是一个对象的集合 可以通过toArray();把对象转换成数组 

如果使用select();查询的话查询出来的将是一个数组里面包含了N个对象;这时候不能直接转换数组

暂时只能把数组遍历;然后把每个模型对象转换成数组

$res=Article::with('tag')->select();
foreach ($res as $vo){
    $array[]=$vo->toarray();
}

with()//关联方法名  

后面可以使用所有的链式操作

//这个是word表关联自己本身进行查询的

class   Word   extends    Model
{
    public function   word()          {
           return $this->hasMany('word','u_id','id');
    }

mysql语句查询

$mysql="SELECT *  ,GROUP_CONCAT(c.name) FROM ykj_article AS a LEFT JOIN ykj_tags AS b ON b.`u_id`=a.`id` JOIN ykj_tag AS c ON b.`tag_id` = c.`id` ";

tp db 查询

$data=db('article')->where('a.id','eq','10')->alias('a')->join('ykj_tags b',['b.u_id=a.id'],'LEFT')->join('ykj_tag c',['c.id=b.tag_id'],'LEFT')->select();


{{vo.nickname}}:{{vo.content}}

{{vo.time}} 回复


  • {{level.nickname}} 回复 {{level.father_nickname}}{{level.content}}
  • {{level.time}} 回复


@
登陆后评论