{{TOC}} **Eloquent** - это название для очень гибкой и выразительном ORM-системы, входящей в состав Laravel. **ORM** обозначает //Объектно-ориентированное представление// - способ доступа к вашим таблицам БД, как будто это объекты. В двух словах, это //очень классно//. ORM позволяет разрабатывать приложения быстрее и, если это качественная ORM, эффективнее. Посмотрим на нашу первую //модель//. Я назвал её **Post**: %% // Файл: application/models/post.php class Post extends Eloquent { } %% Вот и всё. Спасибо за чтение! //Одну минутку!// На самом деле это, конечно, всё что требуется для создания //модели Eloquent//. С её помощью вы можете искать записи, вставлять новые, и изменять существующие. Однако заметьте... //Eloquent// считает, что наша таблица имеет определённую структуру, потому что мы оставили всё по умолчанию. Например, **имя таблицы** определяется множественной формой от имени класса (по таблице словоформ), поэтому в нашем случае таблица будет называться **posts**. Кроме этого предполагается, что **первичный ключ** имеет имя **id**. Но мы можем это изменить! Давайте добавим пару новых свойств нашему классу: %% // Файл: application/models/post.php class Post extends Eloquent { public static $key = 'post_id'; public static $table = 'blog_posts'; } %% .(tl_note) Здесь имя //первичного ключа// изменено на %%(t)post_id%%, а имя таблицы - на %%(t)blog_posts%%. - //прим. пер.// В этой статье мы будем использовать значения по умолчанию. Лично я предпочитаю давать имя каждой своей таблице, но вы не обязательно должны делать тоже самое. == Выборка записей == Итак, как нам получить какие-то записи из нашей таблицы? В нашем распоряжении есть несколько полезных методов: %% // найти одну запись по ID: $post = Post::find(7); // получить все записи: $posts = Post::all(); // выборка записей с помощью строителя запросов для ограничения по полю: $post = Post::where('deleted', '=', 0)->get(); %% Довольно просто, не так ли? Вы можете использовать все методы класса строителя запросов "[[50 Fluent]]". В этой статье мы пока не будем больше углубляться в этот вопрос (!!(tl_note) см. также обширную статью //Dayle Rees// "((48))" - //прим. пер.//!!). == Вставка записей == Перед выборкой записей нам нужно их добавить для начала. Это как раз то место, где //Eloquent// проявляет себя во всей красе: %% $post = new Post; $post->title = 'Laravel - замечателен!'; $post->author = 'Джейсон'; $post->body = 'Laravel очень удобен - используйте его, если вы ещё этого не делаете!'; $post->save(); %% ((#fill)) Здесь мы создаём экземпляр класса %%Post%%, затем присваиваем его полям некоторые значения и сохраняем. Как вам это нравится? Всё это действительно имеет смысл. А если у вас есть массив, вы можете использовать его для простого присвоения значений объекту записи: %% // передаём массив пар поле/значение в конструктор: $post = new Post(array( 'title' => 'Laravel - замечателен!', 'author' => 'Джейсон', 'body' => 'Laravel очень удобен - используйте его, если вы ещё этого не делаете!' )); // мы можем использовать метод fill(), чтобы сделать тоже самое: $post->fill(array( 'title' => 'Laravel - замечателен!', 'author' => 'Джейсон', 'body' => 'Laravel очень удобен - используйте его, если вы ещё этого не делаете!' )); // и не забудем сохранить новую запись: $post->save(); %% Ещё один из альтернативных способов сделать тоже самое одним вызовом: %% $post = Post::create(array( 'title' => 'Laravel - замечателен!', 'author' => 'Джейсон', 'body' => 'Laravel очень удобен - используйте его, если вы ещё этого не делаете!' )); %% Статический метод **create()** создаём объект, присваивает ему значения из переданного массива и вызывает метод %%save()%%. В **результате** он возвращает созданный объект или %%false%%, если произошла ошибка. Наконец, мы можем использовать обычный **insert()**: %% Post::insert(array( 'title' => 'Laravel - замечателен!', 'author' => 'Джейсон', 'body' => 'Laravel очень удобен - используйте его, если вы ещё этого не делаете!' )); %% В отличии от других методов **insert()** просто возвращает %%true%% или %%false%%. Его преимущество - в том, что можно вставить несколько записей за раз: %% Post::insert(array( array( 'title' => 'Laravel - замечателен!', 'author' => 'Джейсон', 'body' => 'Laravel очень удобен - используйте его, если вы ещё этого не делаете!' ), array( 'title' => 'Laravel - простая работа с БД!', 'author' => 'Джейсон', 'body' => 'Нет ничего проще, чем работать с базами данных с помощью Eloquent.' ) )); %% Вот и всё, что вы можете сделать для вставки новых записей в таблицу. В следующей статье я расскажу о продвинутых вставках, а также о такой важной функции, как //массовое присваивание значений//. Будьте готовы! == Изменение записей == Мы знаем, как выбирать и добавлять записи, а как насчёт их обновления? Это так же просто - как и прежде, мы должны выбрать нужную записи: %% $post = Post::find(7); $post->author = 'Дейл'; $post->save(); %% Ну что же, всё понятно. В нашем распоряжении также есть уже рассмотренный ((#fill метод **fill()**)), если мы хотим изменить запись в соответствии с массивом значений. Однако помните, что я говорил о //массовом присваивании// (!!(tl_note)см. статью //((48#uw48-mass Дейла Риза))// - //прим. пер.//!!). == Что дальше? == Это очень краткое вступление к //Eloquent// - в следующей статье мы рассмотрим больше вопросов, в том числе ((48#uw48-зависимости зависимости)) между таблицами.