Маршрутизация Laravel и база данных MySQL отличаются от выходных данных

#php #mysql #laravel-5

#php #mysql #laravel-5

Вопрос:

Я изучаю фреймворк Laravel в течение нескольких часов и пытаюсь делать то, что делается в руководстве, которое я смотрю. Я выполняю запрос через routes.php и это дает мне другой вывод.

В моей базе данных есть только 1 таблица, и она называется «customer», и у меня есть модель с именем «customer» и контроллер с именем «CustomerController»

Мой routes.php код такой

 Route::get('customer', function() {
$customer = FirstLaravelApplicationCustomer::find(1);
echo '<pre>';
print_r($customer);
  

Но localhost выдает мне ошибку, и в ней говорится, что у меня нет никакой таблицы «customers», она автоматически добавила букву «s» в конец таблицы вместо только «customer». у меня действительно нет никакой таблицы ‘customers’, я не знаю, почему она передает неправильное имя таблицы, но в моем коде указано только ‘customer’.

я был бы признателен за любую помощь! Спасибо всем!

Ответ №1:

Laravel / Eloquent ORM использует это соглашение, как и многие ORM. Они используют множество имен таблиц.

Откройте Customer.php моделируйте и добавляйте:

 class Customer extends Model {

    // Add this
    protected $table = 'customer';
  

Однако обычно проще придерживаться соглашений фреймворка.

https://laravel.com/docs/5.3/eloquent#eloquent-model-conventions

Комментарии:

1. БОЖЕ!!! Это сработало! Большое вам спасибо, вы спасли мой день! Но еще один вопрос? Должен ли я делать это для каждой таблицы, которая у меня будет, поскольку, если она множит таблицу, она может распространяться и на другие? Большое вам спасибо!

2. Если вы не увеличили количество других ваших таблиц, тогда да, для каждой модели вам нужно будет настроить это. Если бы я хотел нарушить подобное соглашение для каждой модели, я бы расширил класс модели и удалил логику множественности. Все зависит от того, с чем вы чувствуете себя комфортно. Я думаю, вы обнаружите, что вам было бы проще придерживаться множественности таблиц, если вы хотите использовать Laravel.

3. Хорошо, я понял, поэтому мне просто нужно создать подобную «функцию», чтобы сделать ее защищенной. Еще раз большое вам спасибо! Последний вопрос. Мне жаль, что ты такой замечательный, что я не могу перестать спрашивать XD Это моя работа привела к множественности или Фреймворк делает это в каждой таблице?

4. Что ж, платформа Laravel использует Eloquent ORM. В Eloquent по умолчанию используется множественное число таблиц. Проверьте ссылку, которую я добавил для соглашений. Изучение соглашений фреймворка так же важно, как и код.