Laravel Eloquent firstOrFail返回表中的所有记录

时间:2014-08-22 23:27:48

标签: php laravel

我正试图在我雄辩的模型中检索一行。我想要做的是首先搜索它是否存在或抛出异常。在Laravel文档中,它说我可以使用firstOrFailfindOrFail。雄辩的查询如下:

Game::where('game', 'game-name')->firstOrFail()->remember(60)->get()

这适用于查找记录并在未找到时抛出异常但是它会返回所有行。我想做的就是返回我搜索过的行。我没有在此示例中使用主键索引,因此findOrFail不起作用。

如果我用->get()替换->first(),它会返回表格中的第一行。它忽略了::where()

编辑:当我删除了->get()->remember()时,它返回了所需的行,但是我仍然希望缓存查询但是当我使用->remember()时结果是print_r,整个雄辩模型被转储。

EDIT2:全部已解决。我总是混淆->remember()的地方。正确的方法是:

Game::where('game', 'game-name')->remember(60)->firstOrFail()

2 个答案:

答案 0 :(得分:1)

一切都解决了。
我总是混淆->remember()的地方 正确的方法是:

Game::where('game', 'game-name')->remember(60)->firstOrFail()

答案 1 :(得分:0)

错误的结果似乎是缓存的,在您拥有正确的查询之前请避免使用记住。 如果您使用 get ,它将返回一个Collection实例。 findOrFail 期望将id作为第一个参数。 使用 first 从查询中获取第一个结果,然后检查它是否为空以抛出异常

Game::where('game', 'game-name')->first();