Получение обратного отношения в Laravel

#mysql #laravel

#mysql #laravel

Вопрос:

Есть таблицы школ и оценок. Каждая школа по умолчанию имеет 10 классов. Но в некоторых школах есть только некоторые оценки. Итак, я создал таблицу, в которой я хочу сохранить скрытые оценки для школы

Теперь я хочу получить школьные оценки, которые являются оценками по умолчанию без скрытых.

Это структура БД:

школы:

 id
name
  

оценки:

 id

name
  

school_hidden_grades:

 school_id

grade_id
  

Комментарии:

1. Что вы имеете в виду под «laravel не имеет отношения»? laravel.com/docs/8.x/eloquent-relationships

2. Отредактируйте свой вопрос и измените заголовок вопроса

Ответ №1:

Вы можете просто сделать это так: школьная модель

     public function hiddenGrades( )
    {
        return $this->belongsToMany(Grade::class,'school_hidden_grades','school_id','grade_id');
    }

    public function grades( )
    {
        return $this->hasMany(Grade::class);
    }

  

и чтобы получить скрытые оценки в школах, вы можете просто сделать : $school->hiddenGrades()->get();

Комментарии:

1. Но я хочу получить нескрытые оценки

2. @Behiry, если вы хотите скрыть оценку, вам следует просто добавить логический столбец с именем: isHidden и установить для него значение true / false в таблице оценок. затем, чтобы получить только видимые оценки школы: « $ school-> grades-> where(‘isHidden’, false); «

3. Это верно, если была одна школа, но у каждой школы есть свои скрытые оценки

4. @Behiry, у вас уже есть school_id в таблице оценок, что означает, что оценка принадлежит одной школе

5. Извините за эту ошибку, я ее удалил