Php 拉威尔4:哈斯曼尼思。如何使用where访问元素?

Php 拉威尔4:哈斯曼尼思。如何使用where访问元素?,php,laravel,Php,Laravel,我想得到去年一位作者创作的章节 因此,我有一个作者、书和章节模型 我通过hasManyThrough关系进入章节,在我的作者模型中,这种关系如下: public function chapters() { return $this->hasManyThrough('Chapter', 'Book'); } $chapters = $author->chapters; 一切都很好,因为现在我可以做这样的事情:$authors->chapters 但我想从一位作者那里得到去年

我想得到去年一位作者创作的章节

因此,我有一个作者、书和章节模型

我通过hasManyThrough关系进入章节,在我的作者模型中,这种关系如下:

public function chapters() {
    return $this->hasManyThrough('Chapter', 'Book');
}
$chapters = $author->chapters;
一切都很好,因为现在我可以做这样的事情:$authors->chapters

但我想从一位作者那里得到去年创作的每一章:

$chapter[$i] = $author->chapters()->where('created_at', '>', Carbon::now()->subdays(365));
问题是,它不是从章节中得到“created_at”,而是从作者那里得到“created_at”

如果我尝试这样的方法:

public function chapters() {
    return $this->hasManyThrough('Chapter', 'Book');
}
$chapters = $author->chapters;
然后尝试:

$chapter = $chapters->where('created_at', '>', Carbon::now()->subdays(365));
我得到的信息是:“不能在非对象上使用Where”之类的

如果您能帮助我们查阅去年的章节,我们将不胜感激。提前谢谢

当我在这篇文章中读到的时候,我有一种感觉,如果没有雄辩的口才,这是不可能的。我可能错了:

编辑: 以下是我的所有型号、控制器和迁移:

试试看

$chapters = $author->chapters();
然后

echo '<pre>';
dd($chapters->where('created_at', '>', Carbon::now()->subdays(365))->get());

另一个解决方案是使用约束来加载关系(建议缓解N+1查询问题)


对不起,我刚删除了我的答案
withTimestamps()
只能在
hasMany()
belongtomany()
relations.Thx上调用。我仍然得到一个错误,声明“完整性约束冲突:1052”。进一步的研究表明,我正在调用一个列名,该列名也出现在其他表中,因此我必须指定该表。不确定,如果这是正确的,因为我不知道在使用“where”方法BTW时如何指定表名。我在我的OP中的编辑中添加了所有我的控制器、模型和迁移替换
章节中创建的
中创建的
中创建的
方法它应该已经在读取章节的创建值了,不是吗?