thinkphp5 hasMany一对多关联

一对多关联hasMany

一对多关联的情况也比较常见,使用hasMany方法定义,

参数包括:

hasMany('关联模型名','外键名','主键名',['模型别名定义']);

联表查询例子

 tp表存储用户信息,comment表存储用户评论
Comment表中的uidtp表中的id对应
我们提取出当前用户有哪些评论
我们要在Model文件夹中创建Tp.phpComment.php两个模型

Tp.php内容

下面的Comment便是引入Comment模型
class Tp extends Model
{
	
	#定义关联属性
	public function comm()
	{
		return $this->hasMany('Comment','uid','id');
	}
}

Comment.php内容

class Comment extends Model
{
}

前台方法内容

public function ucom()
	{
		$tp = Tp::get(2);
		echo $tp->name."<br>";
		
		foreach($tp->comm as $comm)
		{
			echo "评论人:{$comm->username} -- 内容:{$comm->content} <br>";
		}
	}

Comment表内容

thinkphp5 hasMany一对多关联
输出后
张三
评论人:兔子 -- 内容:哈哈
评论人:小菲 -- 内容:呼呼呼呼呼 

运行后原生语句中包含

SELECT * FROM `dede_comment` WHERE `uid` = 2

其中 `uid` = 2即是来自Tp::get(2),原Tp::get(2)语句查询的是dede_tp表中的第二条(id=2),因我们进行了关联,所以就出现uid=id
 

联表添加内容

上面的模型内容不变,只在前台方法中加内容
$tp = Tp::get(2);
		$comment = new Comment;
		$comment->username = "大土豆";
		$comment->content = "多吃土豆壮又壮";
		$comment->time = time();
		$tp->comm()->save($comment);
		
		return "添加评论成功";

关联过滤查询

依然是模型内容不变,只在前台方法中加内容
$comment = $tp->comm()->where('uid',2)->select();
		foreach($comment as $comm)
		{
			echo "评论id:{$comm->id} -- 用户评论内容:{$comm->content} <br>";
		}
输出为
评论id:1 -- 用户评论内容:哈哈
评论id:2 -- 用户评论内容:呼呼呼呼呼
评论id:3 -- 用户评论内容:多吃土豆壮又壮
评论id:4 -- 用户评论内容:风风雨雨
评论id:5 -- 用户评论内容:嗷嗷嗷 

联合getBy查询

$comment = $tp->comm()->getByContent('多吃土豆壮又壮');
		
		echo "评论id:{$comment->id} -- 用户评论内容:{$comment->content} <br>";

通过关联更新

依然是模型内容不变,只在前台方法中加内容
$tp = Tp::get(2);
		
		#更新
		$comm = $tp->comm()->getByContent('呼呼呼呼呼');
		$comm->content = "TP5出发";
		$comm->save();
上面通过查询出后,再进行数据修改更新

联合update更新

依然是模型内容不变,只在前台方法中加内容
$tp = Tp::get(2);
		
		$tp->comm()->where('content','TP5驶入')->update(['content' => 'ThinkPHP内容']);

通过关联数据删除内容

$tp = new Tp;
		#删除		
		$comm = $tp->comm()->getByContent('风风雨雨');
		$comm->delete();
上面是删除留言中为风风雨雨的这条。
下面是删除留言中uid2的的第2条且username小菲的留言
$tp = Tp::get(2);	
		$comm = $tp->comm()->getByUsername('小菲');
		$comm->delete();

评论

大侠名号:   验证暗号: 点击我更换图片

修远兮

在这里记录每一点自己需要的知识

添加创始人微信,一起交流心得

推荐文章RECOMMEND