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

来自站长百科
跳转至: 导航、​ 搜索

导航:上一页

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

  • 关联写入

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