/ / Laravel5: Dlaczego mój model "Media" wymaga tabeli o nazwie "media" zamiast "mediów"? - php, laravel, laravel-5

Laravel5: Dlaczego mój model "Media" wymaga tabeli o nazwie "media" zamiast "mediów"? - php, laravel, laravel-5

Od doc of laravel, Twierdzi:

A teraz spójrzmy na przykład Flight model, którego użyjemy do pobierania i przechowywania informacji z naszego serwisu flights tabela bazy danych

Napisałem więc:

<?php

namespace App;

use IlluminateDatabaseEloquentModel;

class Media extends Model
{
//
}

I kontroler:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

use AppHttpRequests;
use AppMedia;

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

Ale kiedy pytam MediaController@index, daje ten błąd:

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`)

Wymaga tabeli o nazwie media zamiast medias jak powiedział dokument. Dlaczego pojawiły się te błędy? Czy przypadkowo otwieram flagę opcji, która zmieniła domyślne mapowanie nazw z modelu na tabelę lub coś podobnego?

Wszelkie sugestie zostaną docenione.


Środowisko:

  • Laravel Framework wersja 5.2.43
  • PHP 7.0.8-2 + deb.sury.org ~ xenial + 1

Odpowiedzi:

4 dla odpowiedzi № 1

Jak powiedział @FrankProvost, Laravel (Doctrine, faktycznie) jest wystarczająco inteligentny i ma zakodowane słowa, których nie należy odmieniać:

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

Tak więc użyj media stół lub wykorzystanie protected $table Zmienna do wymuszenia medias Nazwa tabeli.


0 dla odpowiedzi nr 2

Jeśli chcesz, aby Twój stół miał nazwę "media" w twoim modelu "media", spróbuj podać w klasie.

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

0 dla odpowiedzi № 3

Jeśli chcesz, aby Twój stół nosił nazwę "media" w twoim modelu "media", musisz tak zdefiniować chronioną zmienną

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