关于createOrUpdateAddress方法中的一些小疑惑

来源:9-14 用户收货地址-----模型新增和更新

稳稳地幸福

2017-06-23

在此方法中,我们利用getCurrentUid方法在token中拿到uid  然后利用usermodel 查询用户信息,如果有则更新,如果没有 则新建 七月老师讲的利用模型进行更新  $user->address()->save() 这个是新建,因为user与user_address是关联的 在user模型中,定义了address关联user_address 这个可以理解,然后如果存在 $user->address->save()  不加address这个括号  当时老师并未讲清楚其中的区别  我现在也想的不是很清楚  希望老师能指点下  而且在前面取$userAddress的时候 也是用$user->address,并未加()

写回答

1回答

7七月

2017-06-24

这个说真的,文档里也没讲,我是自己试出来的,记得当时是有一种情况(加括号或者不加括号会出错,具体有点儿忘记了)。这个加了括号就是调用方法,你可以看一下如果把address当做方法来调用,他返回的是什么?是一个HasOne模型关系类;而如果不加(),这应该是读取器的应用。可以在Model基类里找到读取器的定义。这个当时没讲也是因为,要讲这个,需要把源码挖的很深,而这个里面的为什么意义对大多数同学并不大。没有什么为什么,作者就是这么定义的,我个人认为这个设计不好,但确实可以这么用。如果有兴趣的,可以按照我说的这个思路去看下HasOne等模型关系类和Model基类里的读取器

1
1
稳稳地幸福
非常感谢!
2017-06-24
共1条回复

微信小程序电商实战 从前端到后端的全流程精讲

全栈工程师/前后端都讲/架构思想/ RESTFul API、MySQL表设计

4857 学习 · 4388 问题

查看课程