RedBean : déterminer si un type de bean possède une propriété
Je vous propose aujourd'hui de surcharger la classe
RedBean_Facade
(R
de son petit nom lors de l'utilisation de l'outil) afin de lui ajouter cette possibilité :<?php
namespace My\Name\Space;
class RedBean extends \RedBean_Facade
{
public static function typeHasField($type, $field)
{
//return !! self::getCell('SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ? AND COLUMN_NAME = ?', array($type, $field));
// Mettons plutôt en oeuvre les moyens mis à disposition par RedBean, afin de ne pas se limiter à MySQL
try {
$columns = self::getColumns($type);
return isset($columns[$field]);
} catch (\RedBean_Exception_SQL $e) {
// La table n'existe pas encore
return false;
}
}
}
Cette nouvelle méthode s'utilisera tout bêtement ainsi :
use My\Name\Space\RedBean as R;
$type = $bean->getMeta('type'); // si vous ne le connaissez pas directement
if (R::typeHasField($type, 'fieldname')) {
// ...