我正试图在我雄辩的模型中检索一行。我想要做的是首先搜索它是否存在或抛出异常。在Laravel文档中,它说我可以使用firstOrFail
或findOrFail
。雄辩的查询如下:
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()
答案 0 :(得分:1)
一切都解决了。
我总是混淆->remember()
的地方
正确的方法是:
Game::where('game', 'game-name')->remember(60)->firstOrFail()
答案 1 :(得分:0)
错误的结果似乎是缓存的,在您拥有正确的查询之前请避免使用记住。 如果您使用 get ,它将返回一个Collection实例。 findOrFail 期望将id作为第一个参数。 使用 first 从查询中获取第一个结果,然后检查它是否为空以抛出异常
Game::where('game', 'game-name')->first();