数字化技能提升教程,数字化时代生存宝典

数字化百科 / 词条 / ThinkPHP开发指南-关联模型之关联操作

ThinkPHP开发指南-关联模型之关联操作

查看全部词条命名空间:Main

导航:上一页

除了关联查询外,系统也支持关联数据的自动写入、更新和删除

  • 关联写入

PHP代码


$User = D("User");

$data = array();

$data["account"] = "ThinkPHP";

$data["password"] = "123456";

$data["Profile"] = array(

'email' =>'liu21st@gmail.com',

'nickname' =>'流年',

);

$result = $User->realtion(true)->add($user);

这样就会自动写入关联的Profile数据。同样,可以使用参数来控制要关联写入的数据:

PHP代码


$result = $User->realtion("Profile")->add($user);

  • 关联更新

数据的关联更新和关联写入类似

PHP代码


$User = D("User");

$data["account"] = "ThinkPHP";

$data["password"] = "123456";

$data["Profile"] = array(

'email' =>'liu21st@gmail.com',

'nickname' =>'流年',

);

$result = $User-> relation(True)->where(‘id=3’)->save($data);

Realtion(true)会关联保存User模型定义的所有关联数据,如果只需要关联保存部分数据,可以使用:

PHP代码


$result = $User->relation("Profile")->save($data);

这样就只会同时更新关联的Profile数据。

关联保存的规则:

  • HAS_ONE 关联数据的更新直接赋值
  • HAS_MANY 的关联数据如果传入主键的值 则表示更新 否则就表示新增
  • MANY_TO_MANY 的数据更新是删除之前的数据后重新写入
  • 关联删除

删除用户ID为3的记录的同时删除关联数据

PHP代码


$result = $User->relation(true)->delete("3");

如果只需要关联删除部分数据,可以使用

PHP代码


$result = $User->relation("Profile")->delete("3");

category:ThinkPHP