Laravel 5.6 Гибкие отношения, охватывающие разные таблицы - PullRequest
0 голосов
/ 07 апреля 2019

EER Diagram

У меня есть таблица, к которой будет обращаться модель в Laravel для движения запаса.Я хотел бы установить ссылку на поле, которое может быть связано с рядом различных таблиц.

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

  • Purchase.*

    Теперь я добавил поле related_to_type в схему базы данных для таблицы движения запаса, чтобы можно было указать, к какому типу записей относится конкретная запись движения.Но я изо всех сил пытался выяснить, как установить модель для таких отношений, чтобы работать, или если она будет даже работать таким образом, или если мне нужно будет иметь отдельное поле для каждого типа отношений, которые я хочу читатьсвязанная запись с помощью связанной схемы записи ORM.

1 Ответ

1 голос
/ 07 апреля 2019

Это точный вариант использования для полиморфных отношений , они снабжают вашу модель, как вы хотели, столбцом, указывающим тип отношения и идентификатор связанной модели.

См. Также этот пример из документации laravel:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Image extends Model {
  /**
   * Get all of the owning imageable models.
   */
  public function imageable() {
    return $this->morphTo();
  }
}

class Post extends Model {
  /**
   * Get the post's image.
   */
  public function image(){
    return $this->morphOne('App\Image', 'imageable');
  }
}

class User extends Model {
  /**
   * Get the user's image.
   */
  public function image()
  {
    return $this->morphOne('App\Image', 'imageable');
  }
}

Здесь у каждого пользователя и записи может быть изображение, а у каждого изображения есть изображение, которое может быть пользователем или публикацией.

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