为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
炎炎设计 2021-11-26 18:04:50
你可能不清楚我的问题,但我的英语很弱。所以假设,我有两个表“用户”和“项目”。该项目表包含来自用户表的两个外键。那是因为,我想表示两个人(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 查询,但我现在还没有在这里发帖。我忘了为堆栈溢出链接添加书签。
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

您可以为此使用 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 关系


查看完整回答
反对 回复 2021-11-26
?
米脂

TA贡献1836条经验 获得超3个赞

你应该添加


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

希望它对你有用


查看完整回答
反对 回复 2021-11-26
  • 2 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信