如何从laravel中的该表中使用两个外键从单个表中获取数据

你可能不清楚我的问题,但我的英语很弱。所以假设,我有两个表“用户”和“项目”。该项目表包含来自用户表的两个外键。

那是因为,我想表示两个人


(1) 实施项目的人 (Employee) 

(2) 管理或监督项目的人 (Manager)


用户项目

-------------------- ---------------------------- ------------- 

user_id | 姓名 | |p_id | 姓名 | manager_id | 员工_id | 

-------------------- ------------------------------ ----------- 

001 | 经理 | p001 |ABC | 001 | 002 

002 | 员工 |


您可以看到,项目表将用户 ID 称为外键(manager_id 和 employee_id)。因为那两个人最初是用户。


我的问题是,当我要显示如下项目详细信息时,如何通过使用 php laravel(Laravel Framework 5.5.45)分别获得这些用户?


项目

-------------------------

项目名称:ABC

管理人:经理

行为人:员工

------------ -------------

我找到了 MySQL 查询,但我现在还没有在这里发帖。我忘了为堆栈溢出链接添加书签。


炎炎设计
浏览 180回答 2
2回答

梦里花落0921

您可以为此使用 eloquent 关系。在您的项目模型中使用两个关系,如下所示:class Project extends Model{    public function manager()    {        return $this->belongsTo(User::class, 'manager_id');    }    public function employee()    {        return $this->belongsTo(User::class, 'employee_id');    }}所以在视图中它会是这样的Project Name : {{ $project->name }}Managed By : {{ $project->manager->name }}Conduct By : {{ $project->employee->name }}在这里查看 Laravel Eloquent 关系

米脂

你应该添加protected $table = 'project' 因为你的表名像 single。每当您创建用户、项目、服务等表时,Laravel 都需要一个“s”。在数据透视表名称中,如 user_role 、 role_permission 等。class Project extends Model{  protected $table = 'project';  public function manager() {    return $this->belongsTo(User::class, 'manager_id');  }  public function employee(){    return $this->belongsTo(User::class, 'employee_id');  }}对于 Show at Blade 文件。// Controller public function index(){  $projects = Project::all();  return view('blade_File_Destination_Here',compact('projects'));}在刀片文件中查看进程@foreach($projects as $project)   Project   -------------------------   Project Name : {{ $project->name }}   Manage By : {{ $project->manager->name }}   Conduct By : {{ $project->employee->name }}   -------------------------@endforeach希望它对你有用
打开App,查看更多内容
随时随地看视频慕课网APP