找不到类“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”