Simple active record implementation
This section describe how to setup php-tick
There is 3 simple steps to use php-tick when you have downloaded it and copied it to your site:
You only need to do this once in you application.
//Connect to the database
use Localgod\Tick\Manager;
Manager::addDefaultConnectionConfig('sqlite', 'data/db.sqlite');
Manager::setModelPath('models/');
Create a file called User.php in your model path and fill in the following:
use Localgod\Tick\Tick;
/**
* User
*
* @collection users
* @property integer(11) id id - unique
* @property string(255) firstname first_name - null <Unknown>
* @property string(255) lastname last_name - null <Unknown>
* @property DateTime birthday birthday - null
* @property integer(1) member member - <1>
* @property string description description
*/
class User extends Tick
{
}
Read more about defining models
//create
$user = new User();
$user->setFirstname('John');
$user->setLastname('Doe');
$user->setBirthday(new Date());
$user->setMember(2);
$user->setDescription('Some description');
$user->save();
//retrive
$user = new User();
$user = $user->get()->whereEquals('userId', $userId)->current();
echo $user->getFirstname().' '.$user->getLastname();
Add the following methods to your user class:
/**
* Get user by id
*
* @param integer $userId User id
*
* @return User
*/
public static function getById($userId)
{
$user = new self();
$result = $user->get()->->whereEquals('userId', $userId);
if (!$result->isEmpty()) {
return $result->current();
}
throw new RuntimeException('Invalid id:('.$userId.')');
}
/**
* Create a user
*
* @param string $firstname Firstname
* @param string $lastname Lastname
* @param integer $member Member number
*
* @return void
*/
public static function create($firstname, $lastname, $member) {
$user = new self();
$user->setFirstname($firstname);
$user->setLastname($lastname);
$user->setMember($member);
$user->save();
}
Now we can work much faster with our model:
//create
User::create('John', 'Doe', 2);
//retrive
$user = User::getById(1);
echo $user->getFirstname().' '.$user->getLastname();