Как объединить модели и упорядочить данные по двум моделям в Laravel 5.4 - PullRequest
0 голосов
/ 27 мая 2018

Я хотел бы иметь возможность выводить лидеров в разделе по их положению в группе.Я думаю о том, чтобы объединить эти таблицы через сводную таблицу, упорядоченную по позиции из таблицы групп.

Это три класса, с которыми у меня установлены отношения

class Leader extends Model 
{
   public function groups() 
   {  
       return $this->belongsToMany('App\Group');
   }
}

class Group extends Model
{
   public function leaders() 
   {  
       return $this->belongsToMany('App\Leader');
   }
}
class GroupLeader extends Model
{
   // Maybe some function here?
}

Я хотел бы иметь возможность получить группы в контроллере и передать их по отдельности, вроде этого.

$group1 = Leader::where('group', '=', 'group1_name')->orderBy('position', 'asc');
$group2 = Leader::where('group', '=', 'group2_name')->orderBy('position', 'asc');

return view('page.leadership')->with([
    'group1' => $group1,
    'group2' => $group2,
]);

Затем я передал бы переменные для включения файлов, которые будут проходить через них по порядку.

Вот моя структура таблицы

leaders
--------
| id
| first_name
| last_name
| deceased
----------
groups
----------
| id
| group
| title
| position
-----------
group_leader
-------------
| id 
| group_id
| leader_id
------------

1 Ответ

0 голосов
/ 27 мая 2018

Попробуйте

$groups = Leader::whereIn('group', ['group1_name', 'group2_name'])
    ->orderBy('position', 'asc')
    ->groupBy('group', 'id')
    ->get(['group', 'id']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...