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.time}} 回复