thinkphp 5.0 关联对像$user->profile与$user->profile()的区别
学习过程中,总是有一些小插曲。今天说说关联对像$user->role与$user->role()的区别.
乍一看,没区别。唯一的区别是().在官方手册中如下介绍:
一 先看 关联新增:
文档说的什么,先理理顺序。
1 .$user->save() 用户模型保存成功。
2 .$profile=new Profile 新建关联对像 $profile 作为用户的关联属性
3. $profile 赋值
4. $user->profile()->save($profile) 得到用户关联模型并将新的模型数据作为参数保存.
注意,$user->profile() ,带()括号的方法,$profile()对像在保存之前是不存在的。
二 再看 关联更新
模型更新操作 $user->save() $user->profile->save()
$user->profile 得到的是用户的关联对像,作为$user的属性存在,前提是$profile存在。否则会报模型不存在的错误。
对比一下,$user->profile返回的是已存在的关联对像.$user->profile() 是得到未存在的关联对像。
三 总结
$user->profile()->save($profile) 显然是用于新增关联对像。
$user->profile ->save() 则应是对已有关联对像进行更新操作。
简而言之,方法用于带参新增,属性用于更新.