ThinkPHP3.0完全开发手册                                           

 

6.23.4          关联操作

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

关联写入

$User D("User");

$data = array();

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

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

$data["Profile"]   =          array(

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

'nickname'           =>'流年',

   );

$result $User->relation(true)->add($user);

这样就会自动写入关联的Profile数据。

同样,可以使用参数来控制要关联写入的数据:

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

 

关联更新

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

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

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

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

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

关联保存的规则:

HAS_ONE 关联数据的更新直接赋值

HAS_MANY 的关联数据如果传入主键的值 则表示更新 否则就表示新增

MANY_TO_MANY 的数据更新是删除之前的数据后重新写入

 

关联删除

删除用户ID3的记录的同时删除关联数据

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

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

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


站长教学网 免责声明