2013-04-21 2 views
2

Я новичок в Laravel. Итак, если я могу генерировать таблицы с помощью Schema builder, а затем запрашивать данные с помощью таких запросов, как DB::table('user')->find(1), где Eloquent подходит для всей сцены? Какой цели это служит?Laravel: Разница между создателем схемы и красноречивым кем-нибудь?

ответ

6

Eloquent - это имя, присвоенное ORM (Object-relational mapping), которое поставляется с Laravel. Eloquent позволяет вам взаимодействовать со своими столами, как если бы они были объектами, однако Eloquent не знает о фактических столбцах, которые у вас есть на вашем столе.

Рассмотрим простую модель User. Мы хотим, чтобы эта модель запрашивала записи в нашей таблице users.

class User extends Eloquent { 

    protected $table = 'users'; 

} 

То есть очень простая модель. Теперь вместо запроса так.

$user = DB::table('user')->find(1); 

Вы можете запросить вот так.

$user = User::find(1); 

Eloquent сам использует свой собственный построитель запросов, но возвращается к стандартному построителю запросов. Это означает, что для него доступны все методы в построителе запросов и т. Д.

Преимущества здесь:

  1. Вам не нужно указывать свое имя таблицы при каждом вызове.
  2. Код читает намного лучше, это синтаксический сахар.
  3. Вы можете создавать сложные отношения между таблицами и использовать загружаемую загрузку.
  4. Вы можете использовать такие функции, как защита от массового присвоения и сеттеры/приемник.
  5. Вы получаете все преимущества использования построителя запросов, так что вы можете легко переключаться между СУБД.

Я только коснулся Красноречивого. Это гораздо больше. Я предлагаю вам взглянуть на следующие ресурсы.

+0

ты хотел сказать, что я создавать красноречивые модели вручную после создания таблицы с помощью схемы строитель, если я хочу использовать красноречив? –

+0

Это правильно. –

+0

Если вы используете Laravel 5, команда 'php artisan make: model User' создаст как заглушку миграции для построителя схемы, так и модель User. После создания вы можете изменить оба, чтобы заполнить пробелы (т. Е. Любые оставшиеся столбцы, отношения и т. Д.). – Jason

 Смежные вопросы

  • Нет связанных вопросов^_^