【问题标题】:laravel 5 one to one relationship show foreign key name fieldlaravel 5 一对一关系显示外键名称字段
【发布时间】:2014-12-19 05:58:39
【问题描述】:

好吧,我有两张表:(它们有更多的列,但这些是重要的)

项目 id PK AI customer_id(外国客户)

客户 id PK AI 名字

现在,在我的索引页面上,我想在表格中显示项目侦听,在“客户”列中,我想显示客户的姓名而不是 ID,因为 ID 对参与的人没有任何意义去查看表格。

但由于某种原因,我无法让它工作。我已经用谷歌搜索并研究了如何在没有成功的情况下做到这一点..所以我希望我能在这里得到我做错了什么的答案。

这是我的设置:

项目.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');
}

}

客户.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

我得到的错误是“找不到类客户”。当它清楚地存在于我的文件夹中并用于其他目的时。

【问题讨论】:

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


    【解决方案1】:

    首先,确保运行composer dump-autoload

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

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

    在你的关系中

    【讨论】:

    • 我做了你建议的那两件事,现在它找到了类,但给了我这个错误:SQLSTATE[42S22]:找不到列:1054 'where 子句'中的未知列'customers.project_id'( SQL: select * from customers where customers.project_id in (1, 2, 3, 4)) 我可以看到它正在搜索一个不存在的列,我只是不确定为什么。
    • 你应该把你们的关系改成回报$this-&gt;belongsTo('\App\models\Customer');
    • 谢谢!我很难理解这一点,但现在我开始工作了,我有一些东西可以开始。我通过更改并使用 {{ $project->customer->name }} 成功地使名称出现
    猜你喜欢
    • 2020-01-09
    • 2019-06-21
    • 2015-12-29
    • 1970-01-01
    • 2017-11-22
    • 2018-08-12
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    相关资源
    最近更新 更多