RedBeanPHP — это мощная ORM для PHP, которая значительно упрощает работу с базами данных.
ORM или Object-relational mapping (Объектно-реляционное отображение) — это технология программирования, которая позволяет преобразовывать несовместимые типы моделей в ООП, в частности, между хранилищем данных и объектами программирования.
ORM используется для упрощения процесса сохранения объектов в реляционную базу данных и их извлечения, при этом ORM сама заботится о преобразовании данных между двумя несовместимыми состояниями.
Установка библиотеки
Библиотека состоит из одного файла. Для работы необходимо расширение PDO. Библиотека поддерживает такие БД, как: MySQL, SQLite и Postgres.
Скачать библиотеку можно с официального сайта: «redbeanphp.com«. Перейдя на сайт, для скачивания библиотеки зайдите во вкладку «Download». На момент написания статьи авторы библиотеки рекомендуют скачивать версию 5.4:
![](https://static.tildacdn.com/tild3461-3565-4230-a130-373936333035/redbeanphp_1.png)
После скачивания файла, распакуйте его и поместите в ваш проект. С помощью require подключите её в проект. Пример:
require "libs/rb-mysql.php";
Подключение
В проекте создаём файл db.php и подключаемся к БД MySQL:
require "libs/rb-mysql.php";
// localhost - host по умолчанию
// dbname - имя базы данных
// root - логин
// после логина идет пароль
R::setup( 'mysql:host=localhost;dbname=register_rb',
'root', '' );
// Если после пароля поставить true, тогда функция создания таблиц на лету будет включена
// Если после пароля поставить false, тогда функция создания таблиц на лету будет отключена
// Проверка подключения к БД
if(!R::testConnection()) die('No DB connection!');
Если у Вас другая БД, тогда можете зайти на официальный сайт библиотеки на вкладку «Connection» и там найдете примеры подключения к другим БД.
Создание таблиц и записей
В RedBeanPHP есть уникальная способность создавать таблицы на лету и заносить в них необходимые записи (как включать или отключать эту способность я написал в примере выше). Пример:
// Создаем таблицу users
$user = R::dispense('users');
// добавляем в таблицу необходимые записи
$user->login = $data['login'];
$user->email = $data['email'];
$user->name = $data['name'];
$user->family = $data['family'];
// Сохраняем таблицу
R::store($user);
Удаление записей
Удаление из БД делается так:
// одна запись
R::trash( $book );
// Удалить записи с ID = 6, 7
$ids = [6, 7];
R::trashBatch('book', $ids);
// все записи
R::wipe( 'book' );
Чтение данных
Если нужно получить данные без каких-либо условий, то легче это сделать методами load() и loadAll(). Пример:
// Получаем все записи, ID которых указаны в массиве ids
$ids = [1,2,3];
$books = R::loadAll('book', $ids);
foreach ($books as $book){
echo $book->title.'<br/>';
}
// Получаем одну запись по её ID
$id = 1;
$books = R::load('books', $id);
echo $books->title;
Обновление записи
$id = 1;
// Загружаем объект с ID = 1
$book = R::load('book', $id);
// Обращаемся к свойству объекта и назначаем ему новое значение
$book->price = 210;
// Сохраняем объект
R::store($book);
Поиск данных
Если вы не знаете идентификатор бина, вы можете искать бины, используя метод find():
$min_price = 250;
$books = R::find('book', 'price > ?', [$min_price]);
$search = 'строка';
$books = R::find('book', 'author LIKE ?', ["%$search%"]);
$id = 1;
$min_price = 300;
$books = R::find('book', 'id > :id AND price < :price', [':price' => $min_price, ':id' => $id]);
$ids = [1, 3, 5];
$books = R::find('book', 'id IN (' . R::genSlots($ids) . ')', $ids);
Если необходимо получить только одну запись, используем метод findOne():
$id = 1;
$book = R::findOne('book', 'id = ?', [$id]);
$title = 'гостья из будущего';
$book = R::findOne('book', 'title = ?', [$title]);
Если необходимо получить все данные без особых условий, используем метод findAll():
$books = R::findAll('book');
$limit = 5;
$books = R::findAll('book', 'ORDER BY id ASC LIMIT ?', [$limit]);
На этом наше небольшое знакомство с данной библиотекой окончено, но вы можете зайти на официальный сайт библиотеки и изучить официальную документацию.