Я хочу отобразить имена родителей, связанных с детским столом - PullRequest
1 голос
/ 02 апреля 2020

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

$listeEnfant= Enfant::where('Enfant_id', '=' , $id) ->join('Parent','Parent.id_parent', '=','Enfant.parent1_id') ->join('Parent','Parent.id_parent', '=','Enfant.parent2_id') ->get();

SQLSTATE [42000]: Ошибка синтаксиса или нарушения правил: 1066 Таблица / псевдоним не уникальный: 'parent'

1 Ответ

1 голос
/ 02 апреля 2020

Вы должны установить Отношения на вашей модели Enfant. Поскольку у каждого Enfant может быть много Parent , вы можете сделать это:

Enfant. php

public function parents()
{
    return $this->belongsToMany('App\Parent');
}

Родитель. php

public function enfants()
{
    return $this->belongsToMany('App\Enfant');
}

Обратите внимание, что Laravel будет предполагать, что у вас есть enfant_parent таблица.

Затем вы можете запросить существование отношения , чтобы получить всех родителей, у которых есть такие дети:

$parents = Parent::whereHas('enfants')->get();

Версия 2

Поскольку у вас есть два внешних ключа, если вы хотите получить прямой доступ к матери или отцу, вы можете сделать это:

Enfant. php

public function mother()
{
    return $this->belongsToMany('App\Parent', 'enfant_parent', 'enfant_id','parent1_id');
}

public function father()
{
    return $this->belongsToMany('App\Parent', 'enfant_parent', 'enfant_id','parent2_id');
}

После этого вы сможете отобразить родители:

@if($listeEnfant->mother)
    {{ $mother->name }}
@endif
@if($listeEnfant->mother)
    {{ $father->name }}
@endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...