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() 则应是对已有关联对像进行更新操作。

        简而言之,方法用于带参新增,属性用于更新.

原文地址:https://www.cnblogs.com/fangziffff123/p/8605098.html