我正在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>
,则页面会正常加载,但会显示该对象。因此,似乎与访问与分配相关的人员有关。
关于导致错误的原因有什么想法?
答案 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相同。