У меня есть Группа модель, где определены несколько отношений. Теперь я хочу просматривать группы по различным параметрам. Например, группа может иметь «интерес», который определяется как отношение в модели. Поэтому, если я выберу конкретный интерес, он должен показать все связанные группы.Как проверить правильность связи между моделями в laravel
public function browse(Request $request)
{
// $browseField is the field we are browsing against, $fieldId is the primary key for that relationship
// I want $browseField to be a valid relationship
$browseField = $request->browseField;
$fieldId = $request->fieldId;
$groups = \App\Group::whereHas($browseField, function($q) use($fieldId) {
$q->where('id', $fieldId);
})->get();
$data = ['groups' => $groups];
return $this->sendResponseData($data);
}
Теперь я не хотел определять один и тот же процесс для каждой связи и взял имя отношения в качестве параметра.
Теперь это работает, если исправить $browseField
. Но как проверить, действительно ли связь существует. И должен ли я делать фильтрацию таким образом или есть лучший способ?
Редактировать
Чтобы лучше объяснить, что я хочу сделать, группы имеют «Возрастная группа», «Этнос» и т.д. Если я хочу, чтобы просмотреть по возрастным группам, я бы поставить $browseField = ageGroup
(ageGroup
является отношения), $browseField = ethnicity
для просмотра по этническому признаку. Теперь, если кто-то решит поставить $browseField = asfasf
, который недействителен, код выдает ошибку. Это то, что я хочу, чтобы предотвратить
Из того, что это звучит как, вы бы лучше использовать 'Интерес :: belongsToMany («Group»);' в вашей модели Интересы – scottevans93
Если вы правильно выполняете MVC, вам никогда не нужно проверять соединение между классами моделей, вы явно предоставляете это. –