thinkphp5 hasOne一对一关联

一对一关联hasOne参数

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

一对一查询例子

本次一对一查询使用的信息
Model文件夹中的Tp.phpCar.php两个表模型
Car同样只建了个模型而已,内容为空

例子的使用

tp用户表car车量表一名用户各对应自己的一辆车,所以将用户的id与车的uid对应

Tp.php内容

#一对一关联属性
	public function car()
	{
		#Car表中的uid 与 tp表中的id关联
		return $this->hasOne('Car','uid','id');
	}

两个表的字段截图

car表字段
thinkphp5 hasOne一对一关联
tp表字段
thinkphp5 hasOne一对一关联

一个简单的联表查询

查询出car表中第一条内容
$tp = Tp::get(1);
		
		echo "获奖人:{$tp->name} -- 汽车品牌:{$tp->car->brand} -- 车牌号:{$tp->car->plate}";
分别调用了Tp表中的name字段car表中的brandplate字段。

新增数据

$tp = Tp::get(4);
		$cars = ['brand' => '宝马','plate' => '8945656'];
		$tp->car()->save($cars);
我们并未指定uid,我们看一下运行后的原生语句
NSERT INTO `dede_car` (`brand` , `plate` , `uid`) VALUES ('宝马' , '8945656' , 4)
可以看到,虽然uid未指定,但依然会将uid自动加上。

上面是指定某个用户后添加车的信息,下面是添加用户的同时将与他对应的汽车信息也加上。
$tp = new Tp;
		$user = ['name' => '秋刀鱼','tel' => '1307777'];
		if($tp->save($user))
		{			
			$cars = ['brand' => '奥迪','plate' => '76451'];
			$tp->car()->save($cars);
			return "新增成功";
		}else{
			return $tp->getError();
		}
因为用户中已经有27条,所以再添加即是第28个用户,car表中的uid即是28
thinkphp5 hasOne一对一关联

查询后修改数据


$tp = Tp::get(1);
		
		#更新
		if($tp)
		{
			$tp->car->plate = "京v2999";
			$tp->car->save();
		}

删除数据

因为是一对一的,所以是将该用户及车辆信息都删除
$tp = Tp::get(4);
		
		if($tp->delete())
		{
			$tp->car->delete();			
		}

评论

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

修远兮

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

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

推荐文章RECOMMEND