1. Go to this page and download the library: Download enygma/modler library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
$model = new TestModel();
$otherModel = $model->relateMe;
$model = new TestModel();
echo $model->relateMe->otherModelProperty;
class OtherModel extends \Modler\Model
{
protected $properties = array(
'otherModelProperty' => array(
'type' => 'varchar',
'description' => 'Just another property'
)
);
public function findByTestValue($value)
{
/** some SQL that extracts the data */
$this->load($result);
}
}
class TestModel extends \Modler\Model
{
'property1' => array(
'description' => 'Property #1',
'type' => 'varchar'
),
'relateMe' => array(
'description' => 'Return by value relation',
'type' => 'relation',
'relation' => array(
'model' => '\\MyApp\\OtherModel',
'method' => 'findByTestReturnValue',
'local' => 'test',
'return' => 'value'
)
)
}
class OtherModel extends \Modler\Model
{
public function findByTestReturnValue($property1)
{
return 'this is a value';
}
}
// Then, in the "relateMe" property we'd get...
if ($testModel->relateMe === 'this is a value') {
echo 'Valid match!';
}
$db = new PDO('mysql:hostname=127.0.0.1;dbname="testdb', 'username', 'password');
$user = new UserModel($db);
// Finding a user by the "id" column, loads the data into the user
$user->findById(1);
// Or using custom criteria
$user->find(['username' => 'foobar']);
// Creating a new user
$user = new UserModel($db);
$user->username = 'newuser1';
$user->save();
// Updating the username property and saving
$user->username = 'foobarbaz';
$user->save();
// Deleting a user
$user = new UserModel($db);
$user->findById(1);
$user->delete();
$hats = new HatsCollection();
$hats->add(array('test' => 'foo'));
foreach ($hats as $value) {
print_r($value); // will output the "test" => "foo" data
}
echo 'Items in collection: '.count($hats)."\n";
$hat1 = new HatModel();
$hat1->type = 'fedora';
$hat2 = new HatModel();
$hat2->type = 'sombrero';
$hats = new HatsCollection();
$hats->add($hat1);
$hats->add($hat2);
$result = $hats->toArray(true);
/**
* Result will be array(
* array('type' => 'fedora'),
* array('type' => 'sombrero')
* )
*/
class UserCollection extends \Modler\Collection\Mysql
{
public function findUsersByType($type)
{
$sql = 'select username from users where type = :type';
$results = $this->fetch($sql, array('type' => $type));
foreach ($results as $result) {
$user = new Usermodel($this->getDb(), $result);
$this->add($user);
}
}
}
class HatsCollection extends \Modler\Collection
{
public function findColorsByType($type)
{
foreach ($results as $result) {
$color = new \Modler\Color($result);
$this->add($color);
}
}
}
class HatModel extends \Modler\Model
{
protected $properties = array(
'type' => array(
'description' => 'Hat Type',
'type' => 'varchar'
),
'colors' => array(
'description' => 'Hat Colors',
'type' => 'relation',
'relation' => array(
'model' => '\\Modler\\HatsCollection',
'method' => 'findColorsByType',
'local' => 'type'
)
)
);
}
$hat = new HatModel();
$hat->type = 'toque';
// This returns a Hats Collection with the data populated
$colors = $hat->colors;
$this->collection->add('foo');
$this->collection->add('bar');
$this->collection->add('baz');
$this->collection->add('test');
// This will return: array('bar', 'baz', 'test')
$sliced = $this->collection->slice(1);
// This will return: array('baz')
$sliced = $this->collection->slice(2, 1);
class HatModel extends \Modler\Model
{
protected $properties = array(
'id' => array(
'description' => 'Hat ID',
'type' => 'integer',
'guard' => true
),
'type' => array(
'description' => 'Hat Type',
'type' => 'varchar'
)
);
}
// Now if we try to set it...
$hat = new HatModel();
$hat->id = 1234;
var_export($hat->id); // result is NULL
// Calling load has the same effect
$hat->load(array('id' => 1234));
$data = array('id' => 1234);
$hat->load($data, false);
var_export($hat->id); // result is 1234
class UserModel extends \Modler\Model
{
protected $properties = array(
'username' => array(
'description' => 'Username',
'type' => 'varchar'
),
'password' => array(
'description' => 'Password',
'type' => 'varchar'
)
);
}
// To get the result without the password, we call it with the filter paramater
$user = new UserModel(
array('username' => 'foobar', 'password' => password_hash('foobar'))
);
$result = $user->toArray(array('password'));
print_r($result); // results in an array with just array('username' => 'foobar')
// Add a bunch of items to our collection
$data = array('foo', 'bar', 'baz', 'quux', 'foobar', 'barbaz');
$collection = new \Modler\Collection();
foreach ($data as $value) {
$collection->add($value);
}
// You can limit the current collection and return
$collection = $collection->take(3);
// this returns 3
echo 'count: '.count($collection);
// This returns Array('foo', 'bar', 'baz')
print_r($collection->toArray());
// Add a bunch of items to our collection
$data = array('foo', 'bar', 'baz', 'quux', 'foobar', 'barbaz');
$collection = new \Modler\Collection();
foreach ($data as $value) {
$collection->add($value);
}
$collection->order();
// returns Array('bar', 'barbaz', 'baz', 'foo', 'foobar', 'quux');
print_r($collection->toArray());
$collection->order(\Modler\Collection::SORT_ASC);
// Add a bunch of items to our collection
$data = array('foo', 'bar', 'baz', 'quux', 'foobar', 'barbaz');
$collection = new \Modler\Collection();
foreach ($data as $value) {
$collection->add($value);
}
$collection->order(\Modler\Collection::SORT_DESC, 'test');
/**
* Returns set of objects ex:
* [0] => stdClass Object
* ( [test] => bar )
*
* [1] => stdClass Object
* ( [test] => barbaz )
*
* [2] => stdClass Object
* ( [test] => baz )
*/
print_r($collection->toArray());