#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 по умолчанию используется множественное число таблиц. Проверьте ссылку, которую я добавил для соглашений. Изучение соглашений фреймворка так же важно, как и код.