Either returns a (newly created) bean respresenting the desired ENUM
value or returns a list of all enums for the type.
To obtain (and add if necessary) an ENUM value:
$tea->flavour = R::enum( 'flavour:apple' );
Returns a bean of type 'flavour' with name = apple.
This will add a bean with property name (set to APPLE) to the database
if it does not exist yet.
To obtain all flavours:
R::enum('flavour');
To get a list of all flavour names:
R::gatherLabels( R::enum( 'flavour' ) );
function EID($enumName) { return \RedBeanPHP\Facade::enum($enumName)->id; }
/** * Test ENUM functionality offered by Label Maker. * * @return void */ public function testENUM() { testpack('test ENUM'); $coffee = R::dispense('coffee'); $coffee->taste = R::enum('flavour:mocca'); //did we create an enum? asrt(implode('', R::gatherLabels(R::enum('flavour'))), 'MOCCA'); R::store($coffee); $coffee = $coffee->fresh(); //test enum identity check - with alias asrt($coffee->fetchAs('flavour')->taste->equals(R::enum('flavour:mocca')), TRUE); asrt($coffee->fetchAs('flavour')->taste->equals(R::enum('flavour:banana')), FALSE); //now we have two flavours asrt(R::count('flavour'), 2); asrt(implode(',', R::gatherLabels(R::enum('flavour'))), 'BANANA,MOCCA'); $coffee->flavour = R::enum('flavour:mocca'); R::store($coffee); //same results, can we have multiple flavours? asrt($coffee->fetchAs('flavour')->taste->equals(R::enum('flavour:mocca')), TRUE); asrt($coffee->fetchAs('flavour')->taste->equals(R::enum('flavour:banana')), FALSE); asrt($coffee->flavour->equals(R::enum('flavour:mocca')), TRUE); //no additional mocca enum... asrt(R::count('flavour'), 2); $drink = R::dispense('drink'); $drink->flavour = R::enum('flavour:choco'); R::store($drink); //now we have three! asrt(R::count('flavour'), 3); $drink = R::load('drink', $drink->id); asrt($drink->flavour->equals(R::enum('flavour:mint')), FALSE); asrt($drink->flavour->equals(R::enum('flavour:choco')), TRUE); asrt(R::count('flavour'), 4); //trash should not affect flavour! R::trash($drink); asrt(R::count('flavour'), 4); }