Mot-clé - RedBeanPHP

Fil des billets

mardi, 5 décembre 2017

RedBeanPHP, un ORM

RedBeanPHPRedBeanPHP est un ORM (Object-Relational Mapping), c'est-à-dire un  type de programme informatique qui se place en interface entre un programme applicatif et une base de données relationnelle pour simuler une base de données orientée objet (définition Wikipédia). RedBeanPHP permet d'interagir avec MySQL, PostgreSQL et SQlite. Parmi les ORM PHP les plus connus, on connaît entre autres Doctrine et Eloquent.

Installation

Pour l'installation de RedBeanPHP, rien de plus simple : il convient de télécharger le dossier compressé le plus récent, qui correspond au SGBDR que vous souhaitez utiliser. Ensuite, déposez le dans votre projet web en cours, et appelez-le dans les fichiers où des interactions avec la base de données sont nécessaires.


// ENTER.PHP

require_once('inc/rb.php');

Ensuite, effectuez la connexion à votre base de données dans un fichier tiers que vous appellerez derrière la ligne de code précitée.

require_once('inc/database.php');

// DATABASE.PHP

// effectuer la connexion
R::setup('mysql:host=localhost;dbname=chat_id','root','');

// vérifier la connexion
$isConnected = R::testConnection();
     if($isConnected !== true) {
       $_SESSION['message'] = "La connexion est inopérante";
       header('location:index.php');
     }

Pensez à installer également l'extension mbstring pour que l'installation fonctionne - à activer sous un Wamp via les paramètres, et à installer sous un Lamp comme suit :


sudo apt install php7.2-mbstring
sudo service apache2 restart

Ceci fait, si votre base de données est déjà créée, le CRUD (create, retrieve, update, delete) peut commencer.


CRUD

Create (INSERT)


// Attention, pour que les insertions passent, l'extension mbstring doit être installée.
$users = R::dispense('users');

$users->login = $user;
$users->password = $password;
$users->email = $email;

$id = R::store($users);

Retrieve (SELECT)

getAll, getRow, getCol génèrent des tableaux ; find, findAll, findMulti des objets.

// Recherche de toutes les données de la table 
$users = R::getAll('SELECT * FROM users');

// Recherche d'une ligne de données spécifique dans la base de données
$user = R::getRow('SELECT * FROM users WHERE login = :login', [':login' => $user]);

// Recherche d'une colonne spécifique
$onoff = R::getCol( 'SELECT onoff FROM onoff WHERE id = :id', [ ':id' => 1 ] );

// Recherche de données correspondant à une requête précise
$questions_user = R::getAll( 'SELECT id,titre FROM questions WHERE user_id = :user_id AND suite = :suite', [ ':user_id' => $user_id, ':suite' => 0 ] );

// Recherche de toutes les données de la table 
$articles = R::findAll('articles', ' ORDER BY date DESC');

// Recherche de données correspondant à une requête précise 
$articles = R::find('articles', 'statut = ?  ORDER BY date DESC', array('1'));

// Compter toutes les valeurs de la table :
$numOfUsers = R::count( 'users' );

// Compter toutes les valeurs répondant à un critère précis
$numOfUsers = R::count( 'users','login = ?', [$user] ); // Compter le nombre de fois qu'est reprise la valeur spécifiée dans la table

// Compter toutes les valeurs répondant à plusieurs critères
$nb_questions_base = R::getCol( 'SELECT count(id) FROM questions WHERE user_id = :user_id AND suite = :suite', [ ':user_id' => $user_id, ':suite' => 0 ] );

// Jouer sur les paramètres descendant, ascendant, et la limite de résultat attendue
$statut_suite = R::getCol( 'SELECT state FROM questions WHERE suite = :suite ORDER BY id DESC LIMIT 1', [ ':suite' => $id_question ] );

Update (UPDATE)


$users = R::load( 'users', $user_id );

$users->mode_reponse = $mode_reponse_set;
R::store($users)

Delete (DELETE)


$table = R::load($_POST['table'], $_POST['id_mot']);
R::trash($table); //for one bean
R::trashAll($table);

Sources