如何从laravel 5中的两个相关表中获取数据?
How to get data from two related tables in laravel 5?
我有两个模型 Employees 和 Departments,我想从员工那里获取所有数据,包括它所在的部门,像这样:
SELECT e.Firstname, e.Surname, e.Age, d.Name as Department FROM Employees as e INNER JOIN Departments as d ON e.Department = d.ID;
结果是:
------------------------------------------
| Firstname | Surname | Age | Department |
------------------------------------------
| John | Doe | 25 | Finance |
如何在 Laravel 5 中得到相同的结果?
我知道我可以像这样获取模型的所有数据:
$data = Employees::all();
但是我需要 Department 列作为父项的值 table。
使用查询生成器它看起来像这样
DB::table('Employees')
->join('Departments', 'Employees.Department', '=', 'Departments.ID')
->select('Employees.Firstname', 'Employees.Surname', 'Employees.Age', 'Departments.Name')
->get();
使用 Eloquent 看起来像这样
型号
public function department()
{
return $this->belongsTo('App\Departments','Department','ID');
}
控制器
$data->employees = Employees::with('department')->get();
使用查询生成器,我可以通过 @include
传递数据并像这样访问它:
app.blade.php
@include('Club.index.employees',['employees'=>$data->employees])
employees.blade.php
@foreach($employees as $employee)
@include('Club.index.member',['employee'=>$employee])
@endforeach
member.blade.php
<h3>{{ $employee->Firstname }}</h3>
<p class="member-surname">{{ $employee->Surname }}</p>
...
并且有效,但是当我使用 Eloquent 时,它不会像 Departments.Name
那样显示来自父项的字段,在这种情况下,我不知道我是否遗漏了什么在视图中调用它。
我也想知道如何为 table 列使用别名。
在您的模型 Employee 中创建一个职能部门
public function department()
{
return $this->hasMany('App\Department');
}
然后在你的控制器中这样做
$results = Employee::with('department')->get();
这就是您获取员工所有部门的方式,但要确保 table 都在外键基础上相关
我有两个模型 Employees 和 Departments,我想从员工那里获取所有数据,包括它所在的部门,像这样:
SELECT e.Firstname, e.Surname, e.Age, d.Name as Department FROM Employees as e INNER JOIN Departments as d ON e.Department = d.ID;
结果是:
------------------------------------------
| Firstname | Surname | Age | Department |
------------------------------------------
| John | Doe | 25 | Finance |
如何在 Laravel 5 中得到相同的结果?
我知道我可以像这样获取模型的所有数据:
$data = Employees::all();
但是我需要 Department 列作为父项的值 table。
使用查询生成器它看起来像这样
DB::table('Employees')
->join('Departments', 'Employees.Department', '=', 'Departments.ID')
->select('Employees.Firstname', 'Employees.Surname', 'Employees.Age', 'Departments.Name')
->get();
使用 Eloquent 看起来像这样
型号
public function department()
{
return $this->belongsTo('App\Departments','Department','ID');
}
控制器
$data->employees = Employees::with('department')->get();
使用查询生成器,我可以通过 @include
传递数据并像这样访问它:
app.blade.php
@include('Club.index.employees',['employees'=>$data->employees])
employees.blade.php
@foreach($employees as $employee)
@include('Club.index.member',['employee'=>$employee])
@endforeach
member.blade.php
<h3>{{ $employee->Firstname }}</h3>
<p class="member-surname">{{ $employee->Surname }}</p>
...
并且有效,但是当我使用 Eloquent 时,它不会像 Departments.Name
那样显示来自父项的字段,在这种情况下,我不知道我是否遗漏了什么在视图中调用它。
我也想知道如何为 table 列使用别名。
在您的模型 Employee 中创建一个职能部门
public function department()
{
return $this->hasMany('App\Department');
}
然后在你的控制器中这样做
$results = Employee::with('department')->get();
这就是您获取员工所有部门的方式,但要确保 table 都在外键基础上相关