В настоящее время для пользователя я могу вернуть все 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->
утверждение показано выше.
Большое спасибо за вашу помощь.
Я думаю, что вы можете включить данные в вашей сводной таблице в вашу готовую загрузку, например так:
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');
Надеюсь это поможет.
Других решений пока нет …