本期视频登录后即可观看
laravel 伤寒杂病论
3 集视频
23分钟
本期Laravel伤寒杂病论视频课程咱们看第一种最常见的问题,对象关系绑定,不管你使用直接修改关联字段的方式还是官方ORM的对象关系绑定方式,这类问题都会如期而至,打得你措手不及,所有的逻辑都没有问题,但是执行的结果就是一片惊奇,如果不手动重新拉取数据的话,咱们是得不到正确结果的。
创建为何save呢?直接create呀。save一般更新数据的时候使用类似update。直接用create返回没有问题,也没有出现站长说的问题。站长是不是累蒙了?注意身体
save方法和create方法在关联对象的时候倒没有这种区别,按官网的说明,他们的区别在于save方法接受的参数是对象,而create方法接收的参数是数组。我也都进行了实验,都会出现这类问题,不知道兄弟使用的哪个版本,似乎咱们还能一起发现一个更诡异的问题,方便的时候可以把你的代码发给我,共同进步一下。
Laravel Framework 7.12.0
$user = auth()->user(); $data = [ 'post' => "hello" . now(),
]; $user->posts()->create($data); dd($user->posts);
这么操作的话肯定是不会出问题的,用save或者create都没事,但是如果在创建之前随便对 $user->posts 进行任何操作,哪怕是空的遍历,后面就都无法获取到正确结果了
我这里一切正常按照生命周期来说应该也没有问题吧。
正常按照生命周期??? 感觉我真的老了,不该晚上总不好好睡觉,没跟上你的思路,可否描述清晰些。
我理解的生命周期 😅 初始化 ->
请求初始化 -> 执行该PHP脚本-> } 重复执行 请求处理完毕 ->
关闭模块
$user = auth()->user(); $data = [ 'post' => "hello" . now(), ]; if ($user->posts) { // 这里确实比创建的的Post少一条数据😇,因为还没有出发到create() echo $user->posts()->count(); } $user->posts()->create($data); //这里正常输出😅 dd(Post::all());
看来咱们的环境还是有不同的地方,这段代码到了我这里运行就不正常了,后面没有输出正确的数据,看来这个问题还有可挖掘的空间,我多找几个环境试试
辛苦了。辛苦了