找不到类“App\Http\Controllers\App\Model”

Posted

技术标签:

【中文标题】找不到类“App\\Http\\Controllers\\App\\Model”【英文标题】:Class 'App\Http\Controllers\App\Model' not found找不到类“App\Http\Controllers\App\Model” 【发布时间】:2020-02-02 21:44:05 【问题描述】:

我有一个 CRUD 应用程序,除了更新标签外一切正常

这是我的控制器中的update 函数

namespace App\Http\Controllers;

use App\Tag;
use App\PageList;
use App\PageListTag;
use Illuminate\Http\Request;

public function update(Request $request, $id)

    $pages = PageList::find($id);
    $pages->pagetitle =  $request->get('pagetitle');
    $pages->articlelist = $request->get('articlelist');
    $pages->status = $request->get('status');

    $pages->save();

    $pages->tags()->saveMany([
        new App\Tag(),
        new App\Tag(),
    ]);

    return redirect('/pages')->with('success', 'pages updated!');

这是Tag 模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Tag extends Model

    protected $fillable = ['page_list_id', 'page_list_tag_id'];

    protected $with = ['tag'];

    public function tag()
    
        return $this->belongsTo('App\PageListTag', 'page_list_tag_id', 'id');
    

当我运行我的应用程序时,我收到以下错误

找不到类“App\Http\Controllers\App\Tag”

我的代码做错了什么?

【问题讨论】:

【参考方案1】:

你的命名空间是App\Http\Controllers,所以当你创建一个语法new App\Tag()的标签时,它确实被翻译成App\Http\Controllers\App\Tag

因此,只需将您的指令 new App\Tag() 替换为 new Tag()

或者,您也可以使用绝对符号:

new \App\Tag()

【讨论】:

【参考方案2】:

您以错误的方式解析模型命名空间。请看官方PHP documentation

在您的代码中,您正在解析 Tag 类,如下所示

use App\Tag; // <-- This is right

但是在你调用的方法中

$pages->tags()->saveMany([
    new App\Tag(), // <-- And this is wrong!
    new App\Tag(),
]);

您只需调用new Tag(),因为文件顶部的use 已经包含该类。

否则 PHP 将尝试从当前命名空间解析类。这就是它抛出的原因

Class 'App\Http\Controllers\App\Tag' not found

正确地说,您应该在App\Tag 之前添加一个\,因此PHP 将从根目录解析该类。在这种情况下,use 语句将毫无用处

【讨论】:

你的权利,有没有最好的方法来保存我的标签而不是在做什么?,现在我收到这个错误:尝试获取非对象的属性 'id' 此错误与您的问题无关。您正在其他地方尝试从非对象中检索属性(因此它可能是在您的数据库中找不到模型的查询返回的空值)。如果您认为我的回答是正确的,请采纳。对于其他问题,请提出其他问题,我们很乐意为您提供帮助

以上是关于找不到类“App\Http\Controllers\App\Model”的主要内容,如果未能解决你的问题,请参考以下文章

找不到类“App\Http\Controllers\Auth\Registered”

FPDF - 找不到类“App\Http\Controllers\FPDF”

在 Laravel 中找不到类“App\Http\Controllers\Response”错误

在 Laravel 中找不到类“App\Http\Controllers\Excel”

流明:全新安装时找不到 App\Http\Controllers\Controller 类

在 Laravel 5 中找不到类“App\Http\Controllers\Artisan”