-
Notifications
You must be signed in to change notification settings - Fork 0
Active Record
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.
$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);
$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')));
$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
$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/