Laravel — выберите только одну строку из сводной таблицы и верните данные

В настоящее время для пользователя я могу вернуть все matches правильно.

public function getMatches()
{
$matches = Criteria::whereUserId( Auth::id() )
->has('alerts')
->with('alerts.location', 'alerts.user.companies')
->get();

$this->layout->content = View::make('users.alert.matches',
array('matches' => $matches));
}

Отношения:

Criteria belongsToMany Alerts и Alert belongsToMany Criterias,

Проблема:

Если пользователь хочет увидеть больше информации о том или ином матче, я хочу get именно этот результат из базы данных. На мой взгляд, я могу получить доступ к criteria_id внутри первого forloopи alert_id внутри второго forloop,

@foreach($matches as $match)
{{$match->id}}
@foreach($match->alerts as $alert)
{{$alert->id}}
@endforeach
@endforeach

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

Если пользователь должен был выбрать определенный {{$ alert-> id}}, как мне найти, какой критерий_таблицы относится к этому alert_id, а затем запросить базу данных, чтобы получить только этот ряд информации, оба из criteria стол и alert стол, вместе с with-> утверждение показано выше.

Большое спасибо за вашу помощь.

0

Решение

Я думаю, что вы можете включить данные в вашей сводной таблице в вашу готовую загрузку, например так:

public function getMatches()
{
$matches = Criteria::whereUserId( Auth::id() )
->has('alerts')
->with('alerts.location', 'alerts.user.companies')
->withPivot('foo', 'bar'); //pivot table columns you need from pivot table criteria_alert
->get();

$this->layout->content = View::make('users.alert.matches',
array('matches' => $matches));
}

И доступ к нему так:

@foreach($matches as $match)
{{$match->id}}
@foreach($match->alerts as $alert)
{{$match->pivot->foo}} // pivot table data
{{$alert->id}}
@endforeach
@endforeach

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

Кроме того, это может помочь вам упростить ваш код:

$matches = Auth::user()->with('criterias', 'criterias.alert')->get();

С вашими критериями оповещения о таких отношениях:

return $this->belongsToMany('Alert')->withPivot('foo', 'bar');

Надеюсь это поможет.

0

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

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

По вопросам рекламы [email protected]