почему это работает, даже если имя модели во множественном числе в Laravel?

#php #database #laravel #model #relation

#php #База данных #laravel #Модель #отношение

Вопрос:

Я новичок в Laravel.

Когда я изучал Laravel, я заметил, что ВСЕ, Model что я создал, названо во множественном числе, но работает правильно.

Мне интересно, как это может произойти, потому что я прочитал документы после того, как заметил это, и там говорится: «Модель должна называться в единственном числе»..

Кто-нибудь может объяснить, как это работает??

P.S. В этих моделях нет упоминания $table .

Мне так жаль, что я хотел сказать «единственное число», а не «слог».

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

1. Обратитесь к этой ссылке, возможно, вам будет полезно

2. @AnkurTiwari Спасибо, но, возможно, вы забыли оставить ссылку, я думаю 🙂

3. Оппс, извините laracasts.com/discuss/channels/eloquent /…

4. @AnkurTiwari Спасибо! Я прочитал, и я должен был бы сказать, что я уже знал, что таблица во множественном числе называется по умолчанию. Что я хочу знать, так это почему нормально называть модель во множественном числе, но на самом деле спасибо за это

Ответ №1:

Общее соглашение laravel заключается в использовании имени в единственном числе для модели и имени во множественном числе для таблицы. Обратите внимание, что вы можете изменить связанное имя таблицы, используя protected $table = 'yourTableName'; в вашей модели. Я лично считаю, что установка его вручную — хорошая практика.

Я не могу объяснить, как он получает связанное имя таблицы, поскольку это будет эссе (также я не уверен, что смогу объяснить должным образом), но я могу направить вас в правильном направлении.

Поскольку laravel имеет открытый исходный код, вы можете заглянуть под капот и посмотреть, как это работает. Вы можете перейти на framework/src/Illuminate/Database/Eloquent/Model.php или посмотреть это онлайн, чтобы ознакомиться с соответствующими функциями. Вы увидите getTable функцию, которая вернет имя таблицы. Но он использует другую функцию. Итак, вам нужно посмотреть, что находится в этой функции.

После небольшого изучения вы увидите, что laravel на самом деле использует другую библиотеку, чтобы помочь получить название проекта. Он использует inflector. Вы можете немного ознакомиться с ним, чтобы понять, как он получает имя во множественном числе. Там вы можете найти базовый код, правила и т.д., Чтобы понять, как это работает.

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

1. Спасибо за ответ! У меня вопрос. Так вот почему модели, которые называются во множественном числе, работают, даже если предполагается, что они называются в единственном числе?

2. Функция множественного числа библиотеки inflector возвращает то же имя таблицы, если название модели во множественном числе. Однако обратное не сработает. Если у вас есть и таблица, и название модели в единственном числе, это не будет работать по умолчанию. Вам нужно явно установить связь между ними.