ThinkPHP3.0完全开发手册
除了关联查询外,系统也支持关联数据的自动写入、更新和删除
关联写入
$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 的数据更新是删除之前的数据后重新写入
关联删除
删除用户ID为3的记录的同时删除关联数据
$result = $User->relation(true)->delete("3");
如果只需要关联删除部分数据,可以使用
$result = $User->relation("Profile")->delete("3");