#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 возвращает то же имя таблицы, если название модели во множественном числе. Однако обратное не сработает. Если у вас есть и таблица, и название модели в единственном числе, это не будет работать по умолчанию. Вам нужно явно установить связь между ними.