Доступ к взаимосвязи в сводной таблице с использованием ownToMany - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть 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);
    }
}

Спасибо

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