我不知道为什么在使用Laravel应用程序时出现以下错误。
No query results for model [App\Hotspot].
这是我的模型功能,以获取用户的热点。
public function hotspots()
{
return $this->hasManyThrough(Hotspot::class, Operator::class, 'id', 'operator_id');
}
以下是我执行查询以获取数据的方法。
$hotspotId = $id;
$hotspot = Auth::user()->hotspots()->findOrFail($hotspotId);
我突然开始犯这个错误。我不知道出了什么问题!我试图在互联网上找到解决方案,但它们完全不同。
答案 0 :(得分:0)
如https://laravel.com/docs/5.4/eloquent-relationships所示,部分包含很多内容。
return $this->hasManyThrough(Hotspot::class, Operator::class, 'user_id', 'operator_id', 'id');
这是必要的,因为您首先将热点连接到用户,之后您将其操作连接到热点。因此,他的命令是正确的。
它工作一定时间的原因,是因为id冲突,如果你使用Uuids这个代码永远不会工作。您也可以通过以下方式调试此解决方案。
DB::enableQueryLog();
// General i feel like Auth::user()->hotspots->where('id', $hotspotId)->first() is more Laravel'sh.
// Like this you will query a lot, if used in wrong cases.
$hotspot = Auth::user()->hotspots()->findOrFail($hotspotId);
dd(DB::getQueryLog());
或者您可以获取原始sql,有时会为您提供不同的视图。
dd(Auth::user()->hotspots()->toSql());