Присоединяйтесь к нескольким таблицам, используемым в качестве индексации - Laravel

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

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

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

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

Table - membermap

id | chairman_id | designation_id | member_id

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

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

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

Столы

Chairman
id| name

Designation 
id|designation

Members
id|members

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

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

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

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

$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');
}

Карта участников:

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');
    }

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

добавить , '=', между запросами на соединение

Vipertecpro 09.04.2019 23:54

@ViperTecPro Я добавил '=', но это не работает, $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(); Он по-прежнему показывает мне только результат таблицы StateChairmanMembersMap

mightyteja 10.04.2019 04:04
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

 $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 таблицы и сопоставил идентификатор, исходящий от председателя, чтобы отфильтровать результат. Я получаю результаты.

Другие вопросы по теме