Laravel Eloquent Присоединиться

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

Мои таблицы следующие.

  • Клубы
    • Я бы
    • название
  • члены
    • Я бы
    • club_id
    • название

В клубе много членов
Член принадлежит клубу

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

Это мой код установки до сих пор

// clubs controller
public function index()
{
$clubs = Club::all();
return View::make('clubs.list')->with('clubs', $clubs);
}

public function show($id)
{
$club = Club::findOrFail($id);
$members = $club->Members()->get();
return View:: make('clubs.show')->with('club', $club)->('members', $members);
}

// club model
class Club extends Eloquent
{
// each club has many members
public function Members()
{
return $this->hasMany('Member');
}
}// members controller
public function index()
{
$members = Member::all();
return View::make('members.list')->with('members', $members);
}

// member model
class Member extends Eloquent
{
// each member belongs to one club
public function club()
{
return $this->belongsTo('Club');
}
}

1

Решение

В вашем Member Модель объявляет следующий метод отношений:

public function club()
{
return $this->belongsTo('Club');
}

Так что теперь вы можете запросить всех участников с их Club информация как:

$members = Member::with('club')->get();

В вашем View при зацикливании Members Вы можете попробовать что-то вроде этого:

@foreach($members as $member)
{{ $member->name }}
{{ $member->club->name }}
@endforeach

Это не Eloquent Join но используя технику отношений, вы можете сделать это, как указано выше, если вы хотите присоединиться, вы можете попробовать что-то вроде этого:

$members = Member::join('clubs', 'members.club_id', '=', 'clubs.id')
->select('members.*', 'clubs.name as club_name')
->get();

В этом случае вы можете зациклить и использовать Club информация как это;

@foreach($members as $member)
{{ $member->name }}
{{ $member->club_name }}
@endforeach
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector