在index.blade.php中找不到类“ App / Person”

时间:2018-07-16 21:57:32

标签: php laravel

我正在PHP 7.2.5中构建一个Laravel 5.6.27应用程序,可以在其中创建分配,并为其分配任务(task_id)和一个人(person_id)以将其分配给(以及dueDate等)。尝试加载页面时出现此错误:

Class 'App/Person' not found (View: /Users/mmickelson/Sites/sacrament/resources/views/assignments/index.blade.php)

这是index.blade.php文件:

@extends('layouts.master')

@section('title', 'Assignments')

@section('content')
<table>
    @foreach($assignments as $assignment)
        <tr>
            <td>{{$assignment->person->firstName}}</td>
        </tr>
        @endforeach
</table>

@endsection

我只显示该人的名字,以帮助使其尽可能简单并隔离问题。

这是AssignmentController.php(的开头):

use App\Assignment;
use App\Task;
use App\Person;
use Illuminate\Http\Request;

class AssignmentController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index() {
        $assignments = Assignment::all();
        return view('assignments.index', ['assignments'=>$assignments]);
    }
...

这是Assignment.php模型的(开头):

namespace App;

use Carbon\Carbon;
use Collective\Html\Eloquent\FormAccessible;
use Illuminate\Database\Eloquent\Model;

class Assignment extends Model
{
    use FormAccessible;

    protected $fillable = ['person_id', 'task_id', 'dueDate', 'status', 'completedDate'];

    public function person()
    {
        return $this->hasOne('App/Person');
    }
...

“ assignments”的数据库表具有一个person_id列,作为“ people”表的外键。

如果我从index.blade.php中删除person->name,而将行保留为<td>{{$assignment}}</td>,则页面会正常加载,但会显示该对象。因此,似乎与访问与分配相关的人员有关。

关于导致错误的原因有什么想法?

2 个答案:

答案 0 :(得分:3)

我猜这个问题是因为类名错误App/Person应该是App\Person 您可以将其编写如下:

public function person()
{
    return $this->hasOne(\App\Person::class);
}

答案 1 :(得分:1)

您的模型有一个小错误:

    public function person()
    {
        return $this->hasOne('App/Person');
    }

将上面的代码更改为下面的代码:

    public function person()
    {
        return $this->hasOne('App\Person');
    }

最好使用以下代码:

    public function person()
    {
        return $this->hasOne(Person::class);
    }

Person :: class与App \ Person相同。