1

我创建了一个名为公司和项目的模型,我需要显示公司下的项目。该公司显示良好,但是当我向模型添加项目关系时,它显示错误。我是 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
4

5 回答 5

2

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

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

public function projects()
{
    return $this->hasMany('App\projects');
}
于 2018-03-08T09:38:47.083 回答
0

您的模型中缺少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);
}

}

希望这可以帮助

于 2018-03-08T09:41:10.280 回答
0

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

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

public function projects()
{
  return $this->hasMany(App\Project::class);
}
于 2018-03-08T09:42:25.937 回答
0

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

旁注:使用 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');
    }

}
于 2018-03-08T09:56:34.760 回答
0

使用 '' this 来调用模型。

将您的语法更正为:

public function projects()
{
    return $this->hasMany('App\projects');
}
于 2019-01-28T05:33:37.067 回答