如何从 table 中的 table 中的两个外键获取数据 laravel
How to get data from single table with two forigin keys from that table in laravel
可能是我的问题你不清楚,但我的英语很弱。所以假设,我有两个 tables 'user' 和 'project'。此项目 table 包含来自用户 table 的两个外键。
那是因为,我要标两个人
(1) person who implement the project (Employee)
(2) person who Mange or supervise the project (Manager)
user project
-------------------- -----------------------------------------
user_id | name | |p_id | name | manager_id | employee_id |
-------------------- -----------------------------------------
001 | manager | p001 |ABC | 001 | 002
002 | employee |
您可以看到,项目 table 将用户 ID 引用为外键(manager_id 和 employee_id)。因为那两个人最初是用户。
我的问题是,如何通过使用 php laravel(Laravel Framework 5.5.45) 分别获得这些用户 什么时候我要显示项目详细信息,如下所示?
Project
-------------------------
project Name : ABC
Manage By : manager
Conduct By : employee
-------------------------
我找到了 MySQL 查询,但我现在还没有到 post 这里。我忘了为堆栈溢出添加书签 link.
您可以为此使用 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 关系 here
您应该添加
protected $table = 'project' because your table name like single. Laravel requred a single "s" whenever you create table like users,projects,services. in pivot table table name like user_role , role_permission etc.
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');
}
}
用于在 Blade 文件中展示。
// Controller
public function index(){
$projects = Project::all();
return view('blade_File_Destination_Here',compact('projects'));
}
在 Blade 文件中查看进程
@foreach($projects as $project)
Project
-------------------------
Project Name : {{ $project->name }}
Manage By : {{ $project->manager->name }}
Conduct By : {{ $project->employee->name }}
-------------------------
@endforeach
希望它对你有用
谢谢
可能是我的问题你不清楚,但我的英语很弱。所以假设,我有两个 tables 'user' 和 'project'。此项目 table 包含来自用户 table 的两个外键。
那是因为,我要标两个人
(1) person who implement the project (Employee) (2) person who Mange or supervise the project (Manager)
user project -------------------- ----------------------------------------- user_id | name | |p_id | name | manager_id | employee_id | -------------------- ----------------------------------------- 001 | manager | p001 |ABC | 001 | 002 002 | employee |
您可以看到,项目 table 将用户 ID 引用为外键(manager_id 和 employee_id)。因为那两个人最初是用户。
我的问题是,如何通过使用 php laravel(Laravel Framework 5.5.45) 分别获得这些用户 什么时候我要显示项目详细信息,如下所示?
Project ------------------------- project Name : ABC Manage By : manager Conduct By : employee -------------------------
我找到了 MySQL 查询,但我现在还没有到 post 这里。我忘了为堆栈溢出添加书签 link.
您可以为此使用 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 关系 here
您应该添加
protected $table = 'project' because your table name like single. Laravel requred a single "s" whenever you create table like users,projects,services. in pivot table table name like user_role , role_permission etc.
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');
}
}
用于在 Blade 文件中展示。
// Controller
public function index(){
$projects = Project::all();
return view('blade_File_Destination_Here',compact('projects'));
}
在 Blade 文件中查看进程
@foreach($projects as $project)
Project
-------------------------
Project Name : {{ $project->name }}
Manage By : {{ $project->manager->name }}
Conduct By : {{ $project->employee->name }}
-------------------------
@endforeach