【发布时间】:2014-10-16 21:25:51
【问题描述】:
我正在尝试在我的 eloquent 模型中检索一行。我想要做的是首先搜索它是否存在或抛出异常。在 Laravel 文档中,它说我可以使用 firstOrFail 或 findOrFail。雄辩的查询如下:
Game::where('game', 'game-name')->firstOrFail()->remember(60)->get()
这适用于查找记录并在未找到时抛出异常,但它会返回所有行作为结果。我想做的只是返回我搜索过的行。在这个例子中我没有按主键索引,所以 findOrFail 不起作用。
如果我用->first() 替换->get(),它所做的只是返回表中的第一行。它忽略了::where()。
编辑:当我删除 ->get() 和 ->remember() 它返回了所需的行但是我仍然想缓存查询但是当我在结果上使用 ->remember() 和 print_r 时,整个 eloquent 模型都被丢弃了。
EDIT2:一切都已解决。我总是混淆->remember()的地方。正确的做法是:
Game::where('game', 'game-name')->remember(60)->firstOrFail()
【问题讨论】:
-
不记得了,是
firstfirstOrFailgetfind等,你必须照顾。他们都执行查询并返回collection/model/null(或array)所以实际上您确实运行了您想要的查询,然后调用remember并使用get运行另一个查询。