Skip to content
zombiQWERTY edited this page May 5, 2014 · 3 revisions

В simpleMVC встроена поддержка Active Record. Используется эта библиотека: phpactiverecord.org

Необязательные параметры декларирования модели:

class Book extends ActiveRecord\Model{
   static $primary_key = 'book_id';
   static $table_name = 'book_table';
   static $connection = 'test';
 );
}

Как мы видим, внутри модели можно выбирать столбец primary_key, название таблицы, отличное от названия класса, тип подключения. Более подробно на странице документации: http://phpactiverecord.org/projects/main/wiki/Conventions#Conventions
Типы подключений можно задать в файле /application/config/dbConfig.php. По-умолчанию используется подключение development.

Базовые функции: CRUD (Create, Read, Update, Delete)

Create

$post = new Post();
$post->title = 'My first blog post!!';
$post->author_id = 5;
$post->save();
// INSERT INTO `posts` (title,author_id) VALUES('My first blog post!!', 5)
// Так же существует второй вариант:
$attributes = array('title' => 'My first blog post!!', 'author_id' => 5);
$post = new Post($attributes);
$post->save();
// Сохранение тоже имеет второй вариант:
$post = Post::create($attributes);

Read

$post = Post::find(1);
echo $post->title; // 'My first blog post!!'
echo $post->author_id; // 5
// Выбор первой записи в таблице:
$post = Post::first();

// Динамические финдеры:
$post = Post::find_by_name('The Decider');
$post = Post::find_by_name_and_id('The Bridge Builder',100);
$post = Post::find_by_name_or_id('The Bridge Builder',100);

// Использование множественных фильтров
$posts = Post::find('all', array('conditions' => array('name=?', 'The Bridge Builder')));

Update

$post = Post::find(1);
echo $post->title; // 'My first blog post!!'
$post->title = 'Some real title';
$post->save();
// UPDATE `posts` SET title='Some real title' WHERE id=1
$post->update_attributes(array('title' => 'Some other title', 'author_id' => 1));
// UPDATE `posts` SET title='Some other title', author_id=1 WHERE id=1

Delete

$post = Post::find(1);
$post->delete();
# DELETE FROM `posts` WHERE id=1
echo $post->title; // Выведет title следующий записи

Множественное изменение и удаление

// Множественное обновление
// Model::table()->update(AttributesToUpdate, WhereToUpdate);
Post::table()->update(array('title' => 'Massive title!', /* Other attributes... */, array('id' => array(1, 3, 7));
# UPDATE `posts` SET title = `Massive title!` WHERE id IN (1, 3, 7)

// Множественное удаление
// Model::table()->delete(WhereToDelete);
Post::table()->delete(array('id' => array(5, 9, 26, 30));
// DELETE FROM `posts` WHERE id IN (5, 9, 26, 30)

Основные финдеры

Book::find('all');
Book::find('first');
Book::find('last');
// Другой вариант:
Book::all();
Book::first();
Book::last();

Поиск по primary_key: Book::find(2);
Остальные финдеры и фильтры вы можете найти здесь: http://phpactiverecord.org/projects/main/wiki/Finders
Остальную информацию по работе с ActiveRecord можно найти здесь: http://phpactiverecord.org/projects/main/wiki/

Clone this wiki locally