/ / Laravel5: Чому для моєї моделі "Медіа" потрібна таблиця з назвою "медіа" замість "медіа"? - php, laravel, laravel-5

Laravel5: Чому для моєї моделі “Медіа” потрібна таблиця “медіа” замість “медіа”? - php, laravel, laravel-5

Від doc laravel, він стверджує:

Тепер давайте подивимось на приклад Flight модель, яку ми будемо використовувати для отримання та зберігання інформації з нашої flights таблиця бази даних

Тому я написав:

<?php

namespace App;

use IlluminateDatabaseEloquentModel;

class Media extends Model
{
//
}

І контролер:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

use AppHttpRequests;
use AppMedia;

class MediaController extends Controller
{
public function index() {
return view("medias.index")->with("medias", Media::all());
}
}

Але коли я запитую MediaController@index, це дає таку помилку:

QueryException in Connection.php line 729:
SQLSTATE[42S02]: Base table or view not found: 1146 Table "myapp.media" doesn"t exist (SQL: select * from `media`)

Для цього потрібна таблиця з назвою media замість medias як сказано в документі. То чому саме такі помилки траплялися? Чи випадково я відкриваю прапор опції, який змінив відображення імені за замовчуванням від моделі до таблиці чи щось подібне?

Будь-яке пропозицію буде оцінено.


Навколишнє середовище:

  • Версія 5.243 Laravel Framework
  • PHP 7.0.8-2 + deb.sury.org ~ xenial + 1

Відповіді:

4 для відповіді № 1

Як сказав @FrankProvost, Laravel (насправді Вчення) досить розумний і має твердо кодовані слова, які не слід набирати:

....
"Kongoese", "Lucchese", "mackerel", "Maltese", ".*?media",
....

Отже, користуйся media стіл або використання protected $table змінна на силу medias назва таблиці.


0 для відповіді № 2

Якщо ви хочете, щоб ваша таблиця була названа "medias" у вашій моделі "media", спробуйте вказати в Class.

class Media extends Model
{
protected $table = "medias";
}

0 для відповіді № 3

Якщо ви хочете, щоб ваша таблиця була названа "medias" у вашій моделі "media", вам потрібно визначити захищену змінну, як це

class Media extends Model
{
protected $table = "medias";
}