Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从laravel 5中的两个相关表中获取数据?_Laravel_Model_Laravel 5_Query Builder - Fatal编程技术网

如何从laravel 5中的两个相关表中获取数据?

如何从laravel 5中的两个相关表中获取数据?,laravel,model,laravel-5,query-builder,Laravel,Model,Laravel 5,Query Builder,我有两个模型,员工和部门,我想从员工那里获取所有数据,包括it部门,如下所示: 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; $data = Employees::all(); 其结果是: ------------------------------------------ |

我有两个模型,员工和部门,我想从员工那里获取所有数据,包括it部门,如下所示:

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;
$data = Employees::all();
其结果是:

------------------------------------------
| Firstname | Surname | Age | Department |
------------------------------------------
| John      | Doe     | 25  | Finance    |
我怎样才能在拉威尔5中得到同样的结果

我知道我可以得到这样一个模型的所有数据:

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;
$data = Employees::all();
但是我需要Department列作为父表的值

使用查询生成器,它如下所示

 DB::table('Employees')
            ->join('Departments', 'Employees.Department', '=', 'Departments.ID')
            ->select('Employees.Firstname', 'Employees.Surname', 'Employees.Age', 'Departments.Name')
            ->get();
用雄辩的语言看起来是这样的

 DB::table('Employees')
            ->join('Departments', 'Employees.Department', '=', 'Departments.ID')
            ->select('Employees.Firstname', 'Employees.Surname', 'Employees.Age', 'Departments.Name')
            ->get();
模型

控制器

$data->employees = Employees::with('department')->get();

使用查询生成器,我可以通过
@include
传递数据,并按如下方式访问数据:

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;
$data = Employees::all();
app.blade.php

@include('Club.index.employees',['employees'=>$data->employees])
@foreach($employees as $employee)
    @include('Club.index.member',['employee'=>$employee])
@endforeach
<h3>{{ $employee->Firstname }}</h3>
<p class="member-surname">{{ $employee->Surname }}</p>
...
employees.blade.php

@include('Club.index.employees',['employees'=>$data->employees])
@foreach($employees as $employee)
    @include('Club.index.member',['employee'=>$employee])
@endforeach
<h3>{{ $employee->Firstname }}</h3>
<p class="member-surname">{{ $employee->Surname }}</p>
...
member.blade.php

@include('Club.index.employees',['employees'=>$data->employees])
@foreach($employees as $employee)
    @include('Club.index.member',['employee'=>$employee])
@endforeach
<h3>{{ $employee->Firstname }}</h3>
<p class="member-surname">{{ $employee->Surname }}</p>
...
{{$employee->Firstname}

{{$employee->姓氏}

...
它是有效的,但是当我使用Elounce时,它不会显示来自父级的字段,比如
Departments.Name
在这种情况下,我不知道在视图中调用它时是否遗漏了一些内容。
我还想知道如何为表列使用别名。

在模型中,员工创建职能部门

public function department()
  {
      return $this->hasMany('App\Department');
  }
然后在你的控制器中,你可以这样做

$results = Employee::with('department')->get();

这是获取员工所有部门的方式,但请确保这两个表都在外键基础上相关,以及如何设置别名?这不起作用,查询生成错误,它生成此查询:
select*from departments where departments.employees\u id in(1,2)
。我想要的是来自员工而不是部门的数据