У меня есть две модели, сотрудники и отделы, я хотел бы получить все данные от сотрудника, включая его отдел, что-то вроде этого:Как получить данные из двух связанных таблиц в laravel 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;
Результатом этого является:
------------------------------------------
| Firstname | Surname | Age | Department |
------------------------------------------
| John | Doe | 25 | Finance |
Как я могу получить тот же результат в Laravel 5?
Я знаю, что я могу получить все данные модели, как это:
$data = Employees::all();
Но я нужен столбец отдела в качестве значения родительской таблицы.
Использование Query Builder это выглядит как этот
DB::table('Employees')
->join('Departments', 'Employees.Department', '=', 'Departments.ID')
->select('Employees.Firstname', 'Employees.Surname', 'Employees.Age', 'Departments.Name')
->get();
И с помощью красноречивых это выглядит как этот
Модель
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
, я не знаю, если что-то не хватает, когда вы вызываете его в представлении. Также я хотел бы знать, как можно использовать псевдонимы для столбцов таблицы.
И как я могу установить псевдонимы? –
Это не работает. Запрос генерирует ошибку, он генерирует этот запрос: 'select * from department, где department.employees_id в (1, 2)'. Я хочу получить данные от сотрудников не из отделений –