У меня есть 4 модели
- Центр
- HealthAndSafetyDocument
- CentreHealthAndSafetyDocument
- Документ
Что я попытка сделать это - получить доступ ко всем отношениям в модели CentreHealthAndSafetyDocument
через модель Centre
(в основном Document
), используя отношение ownToMany.
Вот отношение в модели Centre
до сих пор:
public function healthAndSafetyDocuments()
{
return $this->belongsToMany(HealthAndSafetyDocument::class,
'centre_health_and_safety_documents',
'centre_id',
'health_and_safety_document_id')
->withPivot('document_id');
}
Если бы я сделал в моем клинке:
@foreach($centre->healthAndSafetyDocuments as $health_and_safety_document)
<tr>
<td>{{$health_and_safety_document}}</td>
</tr>
@endforeach
Вот результат, который я получаю за 1 предмет:
{"id":1,"title":"Fire Risk Assessment","created_at":"2020-04-02T15:41:32.000000Z","updated_at":"2020-04-02T15:41:32.000000Z","pivot":{"centre_id":2,"health_and_safety_document_id":1,"document_id":1}}
Эти данные являются только данными из модели HealthAndSafetyDocument
, однако мне также нужны данные из модели Document
. Лучшее, что я смог сделать, это добавить ->withPivot('document_id')
к моим отношениям, но это только дает мне document_id
. Я не могу сделать $health_and_safety_document->document
, чтобы получить отношения документа.
Что я могу сделать в этой ситуации? Является ли BelongsToMany
неправильным типом отношений для того, чего я пытаюсь достичь?
Ниже приведена схема для таблицы CentreHealthAndSafetyDocument
Schema::create('centre_health_and_safety_documents', function (Blueprint $table) {
$table->id();
$table->integer('centre_id')->unsigned();
$table->integer('health_and_safety_document_id')->unsigned();
$table->integer('document_id')->unsigned()->nullable();
$table->timestamp('expiry_date');
$table->timestamps();
});
Ниже представлена моя модель CentreHealthAndSafetyDocument:
class CentreHealthAndSafetyDocument extends Model
{
public function centre()
{
return $this->belongsTo(Centre::class);
}
public function document()
{
$this->hasOne(Document::class);
}
public function healthAndSafetyDocument()
{
return $this->belongsTo(HealthAndSafetyDocument::class);
}
}
Спасибо