Правильно выбирайте данные из БД в Laravel - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть две таблички «Группа» (содержит группы) и «Расписание» (содержит элементы расписания различных групп).

Каждая запись расписания имеет идентификатор группы.Для одной группы может быть много элементов расписания.

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

Что-то вроде этого:

Group 1 (group_id=1)
- schedule 1 (id=1)
- schedule 2 (id=2)
- schedule 3 (id=3)
Group 2 (group_id=2)
- schedule 4 (id=4)
- schedule 5 (id=5)

Это похоже на массив элементов расписания для каждой группы.

Как я могу это сделать с помощью Laravel Eloqent?

Ответы [ 3 ]

0 голосов
/ 25 апреля 2019

вы можете сделать это с отношением

Вы можете следовать ниже код: -

В вашей Групповой модели добавьте следующий код

public function schedule()
{
  return $this->hasMany("App\Schedule","group_id"); // you model path
}

Итак, у вас есть много расписаний, поэтому мы используем hasMany а затем получить все в контроллере с помощью with метода

Group::with('schedule')->get()->groupBy(id);

здесь мы получаем все данные с группировкой id, потому что мы выбираем данные из групповой модели.

0 голосов
/ 25 апреля 2019

Вам просто нужно создать методы отношений на моделях, как показано ниже

На модели Группа:

use Illuminate\Database\Eloquent\Model;

class Group extends Model
{
    /*
    * Get the schedules of the group
    */
    public function schedule()
    {
      return $this->hasMany(Schedule::class,"group_id");
    }

}

На модели Расписание:

use Illuminate\Database\Eloquent\Model;

class Schedule extends Model
{
    /*
    * Get the group of the schedule
    */
    public function group()
    {
      return $this->belongTo(Group::class,"group_id");
    }

}

таким образом, вы можете получить расписание belogs для группы или группы, которая имеет графики

Наконец, вы можете сделать это для вашего результата на вашем контроллере

Group::with('schedule')->orderBy('groups.id')->get();
0 голосов
/ 25 апреля 2019

в вашей модели группы

public function schedules()
{
    return $this->hasMany('App\Schedule');
}

, так что вы можете сделать что-то вроде этого

$groups = Group::with('schedules')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...