【问题标题】: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”

我的代码做错了什么?

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案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'
      • 此错误与您的问题无关。您正在其他地方尝试从非对象中检索属性(因此它可能是在您的数据库中找不到模型的查询返回的空值)。如果您认为我的回答是正确的,请采纳。对于其他问题,请提出其他问题,我们很乐意为您提供帮助
      猜你喜欢
      • 2018-02-25
      • 1970-01-01
      • 2016-06-02
      • 2016-05-15
      • 2018-05-02
      • 2017-07-12
      • 2019-04-14
      • 2015-12-18
      • 2017-11-29
      相关资源
      最近更新 更多