При наличии отношения ownToMany я получаю коллекцию тем в зависимости от количества заданных вопросов в каталоге. Следовательно, этот список содержит много дубликатов. Я не уверен, могу ли я неправильно понять модель отношений или если я должен просто отфильтровать с помощью различных операций или операций с массивами.
Итак, давайте предположим, что у нас есть три таблицы catalog , тем , вопросов . Принимая во внимание, что вопросы принадлежат одному каталогу и одному топи c. Каталоги и Темы поэтому могут иметь много вопросов. Связь между каталогом и темами установлена в таблице вопросов.
Теперь я хочу показать (отдельный список) всех тем , которые принадлежат конкретному c каталогу. - вопросы .
Для уточнения см. Следующее:
| id | created_at | updated_at | title | is_active | pivot_catalogue_id | pivot_topic_id |
|----|---------------------|---------------------|------------------|-----------|--------------------|----------------|
| 1 | 2020-01-22 11:51:41 | 2020-01-22 11:51:41 | Topic 1 | 1 | 1 | 1 |
| 1 | 2020-01-22 11:51:41 | 2020-01-22 11:51:41 | Topic 1 | 1 | 1 | 1 |
| 1 | 2020-01-22 11:51:41 | 2020-01-22 11:51:41 | Topic 1 | 1 | 1 | 1 |
| 1 | 2020-01-22 11:51:41 | 2020-01-22 11:51:41 | Topic 1 | 1 | 1 | 1 |
| 1 | 2020-01-22 11:51:41 | 2020-01-22 11:51:41 | Topic 1 | 1 | 1 | 1 |
| 1 | 2020-01-22 11:51:41 | 2020-01-22 11:51:41 | Topic 2 | 1 | 1 | 2 |
| 1 | 2020-01-22 11:51:41 | 2020-01-22 11:51:41 | Topic 2 | 1 | 1 | 2 |
| 1 | 2020-01-22 11:51:41 | 2020-01-22 11:51:41 | Topic 2 | 1 | 1 | 2 |
Диаграмма ER
Модель каталога
/**
* Get the corresponding questions of a catalogue.
*
*/
public function Questions()
{
return $this->hasMany(Question::class);
}
/**
* Get the corresponding topics through questions of a catalogue.
*
*/
public function Topics(): belongsToMany
{
return $this->belongsToMany(Topic::class, Question::class);
}
Топи c модель
/**
* Get the corresponding questions for a topic.
*
*/
public function Question()
{
return $this->hasMany(Question::class);
}
Модель вопроса
/**
* Get the corresponding catalogue for the question.
*
*/
public function catalogue()
{
return $this->belongsTo(Catalogue::class);
}
/**
* Get the corresponding topic for the question.
*
*/
public function topic()
{
return $this->belongsTo(Topic::class);
}