【问题标题】:Laravel Has Undefined Constant 'App\App\projectsLaravel 有未定义的常量 'App\App\projects
【发布时间】:2019-07-12 13:33:40
【问题描述】:

我创建了一个名为公司和项目的模型,我需要显示公司下的项目。该公司显示良好,但是当我向模型添加项目关系时,它显示错误。我是 Laravel 的新手。

未定义的常量“App\App\projects”(查看: C:\xampp\htdocs\testdrive\resources\views\companies\show.blade.php) C:\xampp\htdocs\testdrive\app\company.php

型号

use Illuminate\Database\Eloquent\Model;

class company extends Model
{
    protected $fillable = [
        'name',
        'description',
        'user_id'
    ];

    public function user()
    {
        return $this->belongsTo(App\User);
    }

    public function projects()
    {
        return $this->hasMany(App\projects);
    }
}

show.blade.php

@extends('layouts.app')
@section('content')
    <div class="container">
        <!-- Jumbotron -->
        <div class="jumbotron">
            <h1>{{$company->name}}</h1>
            <p class="lead">{{$company->description}}</p>
        </div>

        <!-- Example row of columns -->
        <div class="row">
            @foreach($company->projects as $projects)
                <div class="col-lg-4">
                    <h2>{{$projects->name}}</h2>
                    <p class="text-danger">{{$projects->description}} </p>
                    <p>
                        <a class="btn btn-primary" href="/projects/{{$projects->id}}" role="button">View Project</a>
                    </p>

                </div>
            @endforeach
        </div>
    </div>
@endsection

【问题讨论】:

  • 试试这个返回$this-&gt;hasMany(App\projects::class);
  • 向我们展示您是如何尝试在 show.blade 中使用它的。
  • @Galabin Vasilev 已添加
  • return $this-&gt;belongsTo('App\User'); return $this-&gt;hasMany('App\projects'); 不要忘记引号。
  • Galabin Vasilev 成功了,谢谢

标签: laravel laravel-5 eloquent laravel-5.6


【解决方案1】:

你有一个错字!命名空间应该是字符串:

public function user()
{
    return $this->belongsTo('App\User');
}

public function projects()
{
    return $this->hasMany('App\projects');
}

【讨论】:

    【解决方案2】:

    您的模型中缺少 class 关键字

      class company extends Model
    {
        //
        protected $fillable=[
            'name',
            'description',
            'user_id'
    
        ];
    
    public function user()
    {
        return $this->belongsTo(App\User::class);
    }
    
    public function projects()
    {
        return $this->hasMany(App\projects::class);
    }
    
    }
    

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      模型的传递类或问题中的命名空间

      public function user()
      {
        return $this->belongsTo(App\User::class); //or $this->belongsTo('App\User');
      }
      
      public function projects()
      {
        return $this->hasMany(App\Project::class);
      }
      

      【讨论】:

        【解决方案4】:

        除了使用引号来引用上面提到的模型。 可能还需要定义类的命名空间。

        旁注:对类名使用 PascalCase 也是 Laravel 命名约定(即 Company、WetCamel、FooBarClass)

        namespace App\Company;
        
        use Illuminate\Database\Eloquent\Model;
        
        
        class Company extends Model
        {
            protected $fillable = [
                'name',
                'description',
                'user_id'
        
            ];
        
            public function user()
            {
                return $this->belongsTo('App\User');
            }
        
            public function projects()
            {
                return $this->hasMany('App\Projects');
            }
        
        }
        

        【讨论】:

          【解决方案5】:

          使用 '' this 调用模型。

          将您的语法更正为:

          public function projects()
          {
              return $this->hasMany('App\projects');
          }
          

          【讨论】:

          • 这个答案与接受的答案有何不同?
          猜你喜欢
          • 2021-07-17
          • 2023-01-21
          • 2020-05-05
          • 2021-10-11
          • 2021-12-20
          • 1970-01-01
          • 1970-01-01
          • 2019-05-13
          • 1970-01-01
          相关资源
          最近更新 更多