我知道这是可能的,也许我已经做到了,我需要刷新我的记忆。假设我们有一对多
$post->comments
我想对这篇文章发表评论,其中评论日期晚于特定日期。我不想在 php 值中获取这个特定日期。因为我想用它作为通用列名。
$myComments = $post->comments->where('published', '>=', 'posts.updated_at');
我做了类似的事情,但我得到了
未找到列
谢谢
我知道这是可能的,也许我已经做到了,我需要刷新我的记忆。假设我们有一对多
$post->comments
我想对这篇文章发表评论,其中评论日期晚于特定日期。我不想在 php 值中获取这个特定日期。因为我想用它作为通用列名。
$myComments = $post->comments->where('published', '>=', 'posts.updated_at');
我做了类似的事情,但我得到了
未找到列
谢谢
你这里有3个问题:
首先,
$post->comments
是一个,并且根本Collection
不使用 SQL ,所以不会可用,但会。posts.updated_at
$post->updated_at
其次,关系不使用
joins
,因此posts.updated_at
除非您手动加入它,否则将不可用。第三,
->where()
是一个string
匹配,所以你的查询是字面上的WHERE published = 'projects.updated_at'
,它将返回0
结果。你需要->whereColumn()
在那里使用。您可以通过带有该
where()
子句的“Eager Loading”注释来解决此问题:或者保留
->comments
语法,但传递属性,而不是 SQL 字段:或者,最后,使用
->comments()
与预加载相同的语法: