Объединить несколько таблиц, используемых в качестве индексации - Laravel - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть три таблицы - Председатель, Назначение, Члены.

МОЕ требование - сопоставить члена с председателем и назначить ему роль.

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

После смены председателя большинство членов остаются без изменений.Поэтому мне пришла в голову идея их индексировать

Таблица - membermap

id |Chairman_id |Обозначение_идентификатора |member_id

Таким образом, список сохраняется, сколько председателей приходят и уходят.Мне не нужно создавать новый профиль для нового председателя, а не отображать его.

Теперь я уверен, как мне это сделать,

До сих пор мне удавалось получить идентификатор, но я не уверен, как мне соединить таблицы

Таблицы

Chairman
id| name

Designation 
id|designation

Members
id|members

Вот мой контроллер

$mapmember = Statechairman::findOrFail($id)->statechairmembersmap;
dd($mapmember);

В этом Iam я получаю карту statechairmembers, но получаю весь результат и не ограничиваю совпадение.

Я также пытался присоединиться к запросу, используя базу данных

$mapmember = DB::table('statechairmen')
       ->join('state_chairman_members_maps', 'state_chairman_members_maps.chairman_id','statechairmen.id')
       ->join('statemembers','statemembers.id','state_chairman_members_maps.members_id')
       ->select('state_chairman_members_maps.*')->get();

   but this result show me the  Table - membermap but not the other results.

Мои модели:

Председатель:

public function statechairmembersmap(){



  return $this->hasMany('App\StateChairmanMembersMap','chairman_id','id');
}


public function statemembers(){
    return $this->hasMany('App\Statemembers','chairman_id', 'id');
}

public function statedesignation(){
    return $this->hasMany('App\Statedesignation','id','designation_id');
}

membermap:

protected $table = 'state_chairman_members_maps';
    protected $dates = ['deleted_at'];

    public function statechairman(){
        return $this->belongsTo('App\Statechairman','id');
    }

     public function statedesignations(){
         return $this->belongsTo('App\Statedesignation','designation_id','id');
     }

    public function statemembers(){
        return $this->belongsTo('App\Statemembers','members_id','id');
    }

Пожалуйста, помогите мне, где я делаю неправильно.

1 Ответ

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

Большое спасибо за проверку вопроса. Наконец, после долгих усилий, я смог найти его сам.

 $mapmembers = DB::table('state_chairman_members_maps')
    ->join('statechairmen','statechairmen.id','=','state_chairman_members_maps.chairman_id')
    ->join('statemembers','statemembers.id','=','state_chairman_members_maps.members_id')
    ->join('statedesignations','statedesignations.id','=','state_chairman_members_maps.designation_id')
    ->where('chairman_id','=',$id)
    ->get();

Вот то, что я придумал.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...