关于 pivot 问题

file
file
file
在文档里面看见了获取中间表中的字段能像其它的 Eloquent 模型一样使用,但是我发现这里有点问题
是报这个diffForHumans方法不存在的

Code_Er
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 18
yema

你这个diffForHumans是你自己在模型里写的方法嘛?如果不是,你pivot模型就不存在该方法当然就不能用了,去你pivot 模型看这个方法存在不存在。

5年前 评论
Code_Er

@yema pivot 是多对多取中间表值的方法呀 这个框架自带的吧?

5年前 评论
yema

嗯。说的对。我没看到这个pivot。稍等。我也研究研究

5年前 评论
yema

diffForHumans()是哪来的。文档里有吗?

5年前 评论
leo

学会从报错信息里获取信息。

这个错误是告诉你 $list->pivot->created_at 是 null,不是一个对象,那你觉得问题出在 $list->pivot 还是 $list->pivot->created_at

5年前 评论
Code_Er

@leo 你说的这个问题我也研究过 如果我不使用pivot 取中间值的created_at的话是没问题的 使用了这个pivot 取值就报了null 所以我查了文档但是好像不对头所以上来请教下各路大神

5年前 评论
Code_Er

@yema diffForHumans()这个方法是carbon 框架自带的那个时间格式类里面的方法

5年前 评论
leo

@Code_Er 你需要在关联关系里调用一下 withTimestamps()

5年前 评论
Code_Er

@leo 这个在模型里面多对多有调用的

file

file

5年前 评论
yema

可以尝试打印一下created_at,看看这个created_at是不是carbon实例。

5年前 评论
yema

Carbon::parse($list->pivot->created_at)->diffForHumans(); 你这样试试,不过blade里面不知道能不能直接调用Carbon,你可以在后台先转一下试试。

5年前 评论
Code_Er

@yema Carbon::parse($list->pivot->created_at)->diffForHumans() 这个方法试过 在blade模板是不能这样直接使用的 报错的

5年前 评论
Code_Er

@yema

file
打印出来是carbon对象。。 但是用不了那个diffForHumans方法 很奇怪

5年前 评论
yema

方法体里存在这个函数。
file

我在控制器测是可以使用的。
file

这是我在blade上测试的
file

但是我是可以的
file

唯一不同的是你是从中间表取的,我是返回的。但是打印的carbon实例是一样的

5年前 评论
Code_Er

@yema 这就很奇怪了 都是carbon对象 在blade模板里面使用diffForHumans这个方法是空? 在文档里面讲他是可以使用模型里面的方法 这算不算是bug呢?

5年前 评论
yema

你可以在控制器里试一下能否使用diffForHumans方法

5年前 评论
Code_Er

file

file
控制器是可以的

5年前 评论
Code_Er

@yema 折腾了半天 我找出来了 原来blade模板如果那个参数为空的话会自动报错的 不像控制器返回null

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!