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