thinkphp通过模型查询mysql_tp5中使用模型进行查询

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();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值