Итак, чтобы достичь этого, вам сначала нужно создать модель / контроллер / таблицу ваших категорий:
php artisan make:model Category -m //-m flag creates migration automatically
php artisan make:controller CategoryController --reosource //--resource flag creates a CRUD controller.
После этого в вашей таблице категорий добавьте столбец article_id (и другие нужные вам поля):
public function up()
{
Schema::table('categories', function (Blueprint $table) {
// ...
$table->integer('article_id')->nullable();
});
}
После этого вам нужно изменить таблицу статей, добавив столбец category_id. Для этого создайте новую миграцию, чтобы добавить только один столбец:
php artisan make:migration add_category_id_to_articles_table --table==articles
Внутри этой миграции добавьте следующее:
public function up()
{
Schema::table('articles', function (Blueprint $table) {
$table->integer('category_id')->nullable();
});
}
Теперь, когда у вас настроены миграции, вам нужноналадить отношения. Внутри вашей модели Article добавьте это отношение:
public function category(){
return $this->belongsTo('App\Category');
}
Таким образом, статья будет принадлежать категории. Для категорий, поскольку у них будет более одной статьи, добавьте это отношение:
public function articles(){
return $this->hasMany('App\Article');
}
Итак, теперь у вас все настроено. Запустите миграцию, добавьте несколько категорий и протестируйте их. Дайте мне знать, если у вас есть какие-либо ошибки или проблемы.
РЕДАКТИРОВАТЬ:
Если вы хотите, чтобы только администраторы добавляли новые категории, вы можете создать кнопку, которая будет видна только администраторам. Примерно так:
@if(Auth->user()->role == 'admin'){
//show button
@endif