Проверьте, связан ли элемент Eloquent с другим (с отношением MorphToMany) - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть эти таблицы: - блоки - блокируемые объекты - отчеты - модальности --reportGroups

Блок. php:

public function reports()
{
    return $this->morphedByMany(Report::class, 'blockable');
}

public function modalities()
{
    return $this->morphedByMany(Modality::class, 'blockable');
}

public function reportsGroups()
{
    return $this->morphedByMany(ReportsGroup::class, 'blockable');
}

Отчет. php:

  public function blocks()
  {
    return $this->morphToMany(Block::class, 'blockable');
  }

Для групп отчетов и модальностей существует такой же тип отношений ...

В основном я хотел бы загрузить экземпляр блока и затем проверить, связаны ли экземпляры Report, Modality и ReportGroup. в этот блок. Идея состоит в том, чтобы создать форму редактирования с флажком для каждого экземпляра Report, Modality или ReportGroup.

Какие стратегии существуют? Я прочитал документацию Eloquent, но все еще в замешательстве ...

С уважением, Береги себя ...

Николас

1 Ответ

0 голосов
/ 15 апреля 2020

Я не уверен, что полностью вас понимаю: у вас есть

$ reportInstances, $ modalityInstances, $ reportGroupInstances

, и вы хотите определить, кто имеет отношение к текущему блоку; хорошо, вы должны загрузить модель 'block' с ее отношениями и проверить существование отношений:

$blcokWithRelations=Block::with(['reports','modalities','reportsGroups'])->find($block->id):

foreach($reportInstances as $reportInstance)
{
 if($blcokWithRelations->reports->where('id','=',$reportInstance->id)->get->first()!=null)
// this report has relation to the current block
else
// this report doesn't have relation to the current block
}

то же самое относится и к остальным отношениям

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...