Creating Active Record Classes

We need to create two Active Record classes, UserRecord and PostRecord, to represent data records in the users and posts tables, respectively. Active Record classes must extend from the base class ActiveRecord, and their properties must match exactly to the fields of the corresponding tables. To better organize our directories, we create a new directory protected/database to hold the class files.

Instead of writing the classes manually, we will use the PRADO command line tool again to generate the classes for us.

Under the blog directory, run the following command to enter into the interactive mode of the command line tool:

php path/to/prado-cli.php shell .

We should see

Command line tools for Prado 3.1.0. ** Loaded PRADO appplication in directory "protected". PHP-Shell - Version 0.3.1 (c) 2006, Jan Kneschke >> use '?' to open the inline help >>

At the prompt, enter the following two commands to create UserRecord and PostRecord classes:

>> generate users Application.database.UserRecord >> generate posts Application.database.PostRecord

Here we used the namespace format again to specify the classes to be created. The path Application.database.UserRecord indicates that we want the UserRecord class file to be protected/database/UserRecord.php.

We should see the following directory structure with two new files under protected/database:

If we check the UserRecord class file, we should see the following content. As we see, for each field in the users table, the class has a corresponding data member. The constant TABLE specifies the table name for the UserRecord. The static method finder() allows us to perform query and retrieve users data in terms of UserRecord objects, as we will see in later sections.

class UserRecord extends TActiveRecord { const TABLE='users'; public $username; public $email; public $password; public $role; public $first_name; public $last_name; public static function finder($className=__CLASS__) { return parent::finder($className); } }