php - Laravel ModelNotFoundException:没有模型[]的查询结果
问题描述
运行测试时出现此错误:
ModelNotFoundException:没有模型 [App\Content] 的查询结果
这是我的测试:
/** @test */
public function it_loads_homepage()
{
$this->withoutExceptionHandling();
$response = $this->get('/');
$response->assertStatus(200);
}
这是我的控制器:
public function home()
{
$topbar = Content::where('slug', 'topbar')->firstOrFail();
return view('welcome')->with([
'logo' => Arr::get($topbar->content, 'logo', asset('images/logo.png')),
'quote' => Arr::get($topbar->content, 'quote'),
'quote_author' => Arr::get($topbar->content, 'quote_author')
]);
}
这是我的路线文件:
Route::get('/', 'PageController@home');
Route::post('/admin/content', 'ContentsController@store');
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::middleware('auth')->prefix('admin')->group(function () {
Route::get('/dashboard', 'DashboardsController@index');
Route::patch('/contents/{content}', 'ContentsController@update');
});
如果有人对如何提供帮助有任何想法,将不胜感激,谢谢!
PS如果我需要包括其他任何内容,请告诉我谢谢!
解决方案
查询生成器的 find() 方法可以返回模型实例,如果在数据库中没有找到记录,则返回 null。所以你必须先检查用户是否存在来处理这个问题。如果他这样做,您可以例如显示他的头像,否则您可以显示登录按钮。
您的代码有点混乱,我建议您不要将逻辑与视图代码混合。您应该让用户进入控制器,然后将他传递给查看
$topbar = Content::where('slug', 'topbar')->get()->toArray();
return view('welcome')->with([
'logo' => Arr::get($topbar->content, 'logo', asset('images/logo.png')),
'quote' => Arr::get($topbar->content, 'quote'),
'quote_author' => Arr::get($topbar->content, 'quote_author')
]);
推荐阅读
- c - 从一个字节中读取“N”位
- java - Itext Java 11:com.itextpdf.io.source.ByteBufferRandomAccessSource$1 的非法反射访问
- file - OpenCV 3.4.3 - VideoWriting 时未调用 GStream
- bootstrap-4 - Bootstrap 导航栏 - 文本布局
- c# - Dynamics 365 FakeXrm“usersettings”实体错误
- java - Hibernate - 多次删除 + 插入操作而不调用刷新方法会导致重复
- python - 浏览具有类别的网页
- ios - Swift & Firebase:在 Firebase 中搜索/查找数据后执行 Segue
- docker - Docker Compose 端口映射:127.0.0.1 拒绝连接
- c# - 具有多个数据库配置的 SignalR