【问题标题】:Laravel FatalErrorException in Model.php line 827: Class not foundModel.php 第 827 行中的 Laravel FatalErrorException:找不到类
【发布时间】:2015-10-28 23:26:38
【问题描述】:

我对 Laravel 很陌生。 我尝试在我的代码中使用一个示例,但结果出现错误 - FatalErrorException in Model.php line 827: Class Category not found

之后我修改了一行代码并修复了一个错误。但是,我实际上不明白错误的原因以及如何修复它。

这是我的代码(因此,当我尝试使用 category 构建查询时 - 我收到错误):

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Category;

class Translation extends Model
{
    protected $fillable = array('lang1', 'lang2', 'lang1_code', 'lang2_code', 'category_id', 'created_at', 'updated_at');

    public function category() {
        return $this->belongsTo('Category', 'category_id');
        //return $this->belongsTo('App\Category', 'category_id');
    }        
}

但是,当我修改一行时,我没有得到上述错误:

旧行(错误):return $this-&gt;belongsTo('Category', 'category_id');

新行(无错误):return $this-&gt;belongsTo('App\Category', 'category_id');

【问题讨论】:

  • CategoryTranslation文件类的路径是什么?
  • 查看Category的命名空间,但如果保留默认,应该是$this-&gt;belongsTo("App\Category", ...);

标签: php laravel


【解决方案1】:

您的所有模型通常都存储在 App 文件夹中。

因此,对于关系,您需要将完整路径传递给您的模型,例如

App\Category

【讨论】:

    【解决方案2】:

    在关系中你必须在PHP 5.5之前添加完整路径

    'App\Category'
    

    自 PHP 5.5 起,class 关键字也用于类名解析。您可以使用ClassName::class 获取包含ClassName 类的完全限定名称的字符串。这对于命名空间类特别有用。

    <?php
    namespace App;
    use Illuminate\Database\Eloquent\Model;
    use App\Category;
    
    class Translation extends Model
    {
        protected $fillable = array('lang1', 'lang2', 'lang1_code', 'lang2_code', 'category_id', 'created_at', 'updated_at');
    
        public function category() {
            return $this->belongsTo(Category::class, 'category_id');
        }        
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多