laravel 5一对一关系显示外键名称字段

时间:2014-10-23 14:19:00

标签: php mysql laravel relational-database laravel-5

Okey所以,我有两个表:(他们有更多列,但这些是重要的)

项目 id PK AI customer_id(FK客户)

客户 id PK AI 名称

现在,在我的索引页面上,我想要在一个表格和"客户"中显示项目。列我想显示客户的名称而不是ID,因为ID对于要查看该表的人没有任何意义。

出于某种原因,我无法让它发挥作用。我已经用Google搜索并研究了如何做到这一点而没有成功。所以我希望我能在这里找到我做错的答案。

这是我的设置:

Project.php

<?php namespace App\models;

use Illuminate\Database\Eloquent\Model;

class Project extends Model {

protected $table = 'projects';

protected $fillable = [
    'customer_id', 'user_owner', 'user_project_leader' , 'name', 'description', 'status', 'offered_price',
    'estimate', 'project_start', 'deadline', 'free_text', 'total_price', 'created_at', 'updated_at'

];

public function customer()
{
    return $this->hasOne('Customer');
}

}

Customer.php

<?php namespace App\models;

use Illuminate\Database\Eloquent\Model;

class Customer extends Model {

protected $table = 'customers';

protected $fillable = [
    'name', 'reference_person', 'created_at', 'updated_at'

];

}

ProjectsController.php

public function index(){          
$projects = Project::with('customer')->get();
return view('projects.index', compact('projects'));
}

最后,我的index.php

@foreach($projects as $project)
    <tr>
      <td>{{ $project->name }}</td>
      <td>{{ $project->user_owner }}</td>
      @foreach($project->customer as $pcustomer)
      <td>{{ $pcustomer->name }}</td>
      @endforeach
      <td>{{ $project->deadline }}</td>
      <td>{{ $project->offered_price }}</td>
      <td> 00h</td>
    </tr>
  @endforeach

我得到的错误是&#34;未找到班级客户&#34;。当它显然在我的文件夹中并用于其他目的时。

1 个答案:

答案 0 :(得分:1)

首先,确保您运行composer dump-autoload

第二件事 - 我认为你需要使用:

return $this->hasOne('\App\models\Customer');

在您的关系中