Downloads
Stars
Version
Treat your attributes as they deserve, as objects!
Modify your composer.json and run composer update
{
"require": {
"echowine/laravel-orm-ao":"@dev"
}
}
namespace CoreWine\ORM\Test\Model;
use CoreWine\ORM\Model;
use CoreWine\ORM\AttributesBuilder;
class User extends Model{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'tests_users';
/**
* List of all your attributes.
*
* @param AttributesBuilder $builder
*
* @return void
*/
protected function attributes(AttributesBuilder $builder){
$builder -> string('username')
-> minLength(3)
-> maxLength(10)
-> match("/^([a-zA-Z0-9])*$/");
$builder -> boolean('active');
$builder -> number('points') -> range(0,99);
}
}
Starting with the easiest one, only two values accepted (true,false)
$user = User::first();
$user -> active = "true"; // true
$user -> active = "false"; // false
$user -> active = true; // true
$user -> active = 1; // true
$user = User::first();
$user -> points = 10;
###Methods
Method | Description |
---|---|
range(int $min, int $max) | Minimum and maximum at once |
min(int $min) | Minimum value |
max(int $max) | Maximum value |
###Exceptions
Exception | Description |
---|---|
CoreWine\ORM\Field\Number\Exceptions\TooSmallException | The value is too small |
CoreWine\ORM\Field\Number\Exceptions\TooBigException | The value is too big |
Thanks to magic methods editing the value of an attribute remains the same
$user = User::first();
$user -> username = "Admin";
$user -> save();
But i told you, attributes are objects!
$user -> username -> toLowerCase(); // "admin"
$user -> username -> length(); // 5
###Methods
Method | Description |
---|---|
match(string|closure $match) | A regular expression or a closure that define the correct value |
minLength(int $min) | Minimum length |
maxLength(int $max) | Maximum length |
###Exceptions
Exception | Description |
---|---|
CoreWine\ORM\Field\Number\Exceptions\TooShortException | The value is too short |
CoreWine\ORM\Field\Number\Exceptions\TooLongException | The value is too long |
CoreWine\ORM\Field\Number\Exceptions\InvalidException | The value doesn't match with the regex/closure |
The string field is currently using Stringy\Stringy, check all methods available here danielstjules/Stringy