Могут ли две модели использовать один и тот же стол в Laravel? - PullRequest
0 голосов
/ 07 октября 2018

У меня есть таблица категорий с is_parent в качестве ссылки внешнего ключа с идентификатором категории в той же таблице.теперь я хочу создать категорию отношений hasMany, подкатегория и подкатегория принадлежит категории.так что я могу получить доступ как красноречивый.как я это сделал?

Вот моя структура таблицы:

Schema::create('categories', function (Blueprint $table) {
    $table->increments('id');
    $table->string('category_name');
    $table->text('category_description')->nullabale();
    $table->string('category_image');
    $table->boolean('category_status');
    $table->integer('user_id')->unsigned();
    $table->boolean('is_parent');
    $table->timestamps();
    $table->index('user_id');
    $table->foreign('user_id')->references('id')->on('users');
});

1 Ответ

0 голосов
/ 07 октября 2018

Вы можете создать 2 модели для одной и той же таблицы, но в вашем случае вам это не нужно.

Вот как вы делаете родительские> дочерние отношения:

Schema::create('categories', function (Blueprint $table) {
   $table->increments('id');
   $table->integer('parent_id')->unsigned()->nullable()->default(null);
   ...
});

А для содержимого модели:

class Category extends Model{
  ...
     public function parent(){
        return $this->belongsTo('App\Category','parent_id');
     }
     public function children(){
        return $this->hasMany('App\Category','parent_id');
     }
}

теперь для доступа к дочерним элементам категории:

$category = App\Category::find(1);
$subCategories = $category->children;

преимущество этого метода в том, что вам не нужно иметь 2 отдельные таблицы,один для category и один для sub-categories или 2 модели, только один стол, одна модель

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