Может войдёшь?
Черновики Написать статью Профиль

Eloquent - выборка, добавление и изменение записей

перевод

  1. 1. Выборка записей
  2. 2. Вставка записей
  3. 3. Изменение записей
  4. 4. Что дальше?

Eloquent — это название для очень гибкой и выразительном ORM-системы, входящей в состав Laravel. ORM обозначает Объектно-ориентированное представление — способ доступа к вашим таблицам БД, как будто это объекты. В двух словах, это очень классно.

ORM позволяет разрабатывать приложения быстрее и, если это качественная ORM, эффективнее.

Посмотрим на нашу первую модель. Я назвал её Post:

PHP
// Файл: application/models/post.php

class Post extends Eloquent {
}

Вот и всё. Спасибо за чтение!

Одну минутку!

На самом деле это, конечно, всё что требуется для создания модели Eloquent. С её помощью вы можете искать записи, вставлять новые, и изменять существующие.

Однако заметьте... Eloquent считает, что наша таблица имеет определённую структуру, потому что мы оставили всё по умолчанию. Например, имя таблицы определяется множественной формой от имени класса (по таблице словоформ), поэтому в нашем случае таблица будет называться posts. Кроме этого предполагается, что первичный ключ имеет имя id.

Но мы можем это изменить! Давайте добавим пару новых свойств нашему классу:

PHP
// Файл: application/models/post.php

class Post extends Eloquent {
  public static 
$key 'post_id';
  public static 
$table 'blog_posts';
}

Здесь имя первичного ключа изменено на post_id, а имя таблицы — на blog_posts. — прим. пер.

В этой статье мы будем использовать значения по умолчанию. Лично я предпочитаю давать имя каждой своей таблице, но вы не обязательно должны делать тоже самое.

Выборка записей

Итак, как нам получить какие-то записи из нашей таблицы? В нашем распоряжении есть несколько полезных методов:

PHP
// найти одну запись по ID:
$post Post::find(7);

// получить все записи:
$posts Post::all();

// выборка записей с помощью строителя запросов для ограничения по полю:
$post Post::where('deleted''='0)->get();

Довольно просто, не так ли? Вы можете использовать все методы класса строителя запросов «Fluent». В этой статье мы пока не будем больше углубляться в этот вопрос (см. также обширную статью Dayle Rees «Eloquent ORM — работа с БД»прим. пер.).

Вставка записей

Перед выборкой записей нам нужно их добавить для начала. Это как раз то место, где Eloquent проявляет себя во всей красе:

PHP
$post = new Post;

$post->title 'Laravel - замечателен!';
$post->author 'Джейсон';
$post->body 'Laravel очень удобен - используйте его, если вы ещё этого не делаете!';

$post->save();

Здесь мы создаём экземпляр класса PHPPost, затем присваиваем его полям некоторые значения и сохраняем. Как вам это нравится? Всё это действительно имеет смысл. А если у вас есть массив, вы можете использовать его для простого присвоения значений объекту записи:

PHP
// передаём массив пар поле/значение в конструктор:
$post = new Post(array(
  
'title'  => 'Laravel - замечателен!',
  
'author' => 'Джейсон',
  
'body'   => 'Laravel очень удобен - используйте его, если вы ещё этого не делаете!'
));

// мы можем использовать метод fill(), чтобы сделать тоже самое:
$post->fill(array(
  
'title'  => 'Laravel - замечателен!',
  
'author' => 'Джейсон',
  
'body'   => 'Laravel очень удобен - используйте его, если вы ещё этого не делаете!'
));

// и не забудем сохранить новую запись:
$post->save();

Ещё один из альтернативных способов сделать тоже самое одним вызовом:

PHP
$post Post::create(array(
  
'title'  => 'Laravel - замечателен!',
  
'author' => 'Джейсон',
  
'body'   => 'Laravel очень удобен - используйте его, если вы ещё этого не делаете!'
));

Статический метод create() создаём объект, присваивает ему значения из переданного массива и вызывает метод PHPsave(). В результате он возвращает созданный объект или PHPfalse, если произошла ошибка.

Наконец, мы можем использовать обычный insert():

PHP
Post::insert(array(
  
'title'  => 'Laravel - замечателен!',
  
'author' => 'Джейсон',
  
'body'   => 'Laravel очень удобен - используйте его, если вы ещё этого не делаете!'
));

В отличии от других методов insert() просто возвращает PHPtrue или PHPfalse. Его преимущество — в том, что можно вставить несколько записей за раз:

PHP
Post::insert(array(
  array(
  
'title'  => 'Laravel - замечателен!',
  
'author' => 'Джейсон',
  
'body'   => 'Laravel очень удобен - используйте его, если вы ещё этого не делаете!'
  
),
  array(
  
'title'  => 'Laravel - простая работа с БД!',
  
'author' => 'Джейсон',
  
'body'   => 'Нет ничего проще, чем работать с базами данных с помощью Eloquent.'
  
)
));

Вот и всё, что вы можете сделать для вставки новых записей в таблицу. В следующей статье я расскажу о продвинутых вставках, а также о такой важной функции, как массовое присваивание значений. Будьте готовы!

Изменение записей

Мы знаем, как выбирать и добавлять записи, а как насчёт их обновления? Это так же просто — как и прежде, мы должны выбрать нужную записи:

PHP
$post Post::find(7);

$post->author 'Дейл';

$post->save();

Ну что же, всё понятно. В нашем распоряжении также есть уже рассмотренный метод fill(), если мы хотим изменить запись в соответствии с массивом значений. Однако помните, что я говорил о массовом присваивании (см. статью Дейла Ризаприм. пер.).

Что дальше?

Это очень краткое вступление к Eloquent — в следующей статье мы рассмотрим больше вопросов, в том числе зависимости между таблицами.

Как вы считаете, полезен ли этот материал? Да Нет

Комментарии (2)

fromhell

Мне вот интересно, а автор выдумал или писал про реальные вещи? У меня после его метода выдает 25+ ошибок, ничерта не работает. Хотелось бы посмотреть как он выполняет эти запросы в файле. Проблема ларавеля в том, что туториалы настолько скудны и нерабочие что отпадает желание работать с этим %%%. Конкретный пример — на локалхосте пхп идет на ура, при запуске в ларавеле +100500 ошибок.
Дизлайк

Proger_XP

Статье пять лет, дата публикации — 21 мая 2012. Она относится к Laravel 3.

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.