为什么我突然开始在Laravel中获得模型错误的无查询结果?

时间:2017-08-03 17:21:36

标签: php laravel laravel-5

我不知道为什么在使用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);

我突然开始犯这个错误。我不知道出了什么问题!我试图在互联网上找到解决方案,但它们完全不同。

1 个答案:

答案 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());