Skip to content

Commit a96ea38

Browse files
committed
Final documentation
1 parent 8a9d046 commit a96ea38

File tree

1 file changed

+88
-13
lines changed

1 file changed

+88
-13
lines changed

dbObject.md

Lines changed: 88 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -123,28 +123,103 @@ $user->delete ();
123123
```
124124

125125
###Relations
126-
Currently dbObject supports only hasMany and hasOne relations only. To use them declare $relations array in the model class like:
126+
Currently dbObject supports only hasMany and hasOne relations. To use them declare $relations array in the model class.
127+
After that you can get related object via variable names defined as keys.
128+
129+
HasOne example:
127130
```php
128131
protected $relations = Array (
129132
'person' => Array ("hasOne", "person", 'id');
130-
'products' => Array ("hasMany", "product", 'userid')
131133
);
134+
135+
...
136+
137+
$user = user::byId (1);
138+
// sql: select * from $persontable where id = $personValue
139+
echo $user->person->firstName . " " . $user->person->lastName . " have the following products:\n";
132140
```
133-
After that you can get related object via variables and do their modification/removal/display:
141+
142+
In HasMany Array should be defined target object name (product in example) and a relation key (userid).
143+
144+
HasMany example:
134145
```php
146+
protected $relations = Array (
147+
'products' => Array ("hasMany", "product", 'userid')
148+
);
149+
150+
...
151+
135152
$user = user::byId (1);
136-
// sql: select from $persontable where id = $personValue
137-
echo $user->person->firstName . " " . $user->person->lastName . " have the following products:\n";
138-
// sql: select from $product_table where userid = $userPrimaryKey
153+
// sql: select * from $product_table where userid = $userPrimaryKey
139154
foreach ($user->products as $p) {
140155
echo $p->title;
141156
}
142157
```
143-
###Error checking
144-
TBD
145-
###Validation
146-
TBD
158+
###Timestamps
159+
Library provides a transparent way to set timestamps of an object creation and its modification:
160+
To enable that define $timestamps array as follows:
161+
```php
162+
protected $timestamps = Array ('createdAt', 'updatedAt');
163+
```
164+
Field names cant be changed.
165+
166+
###Validation and Error checking
167+
Before saving and updating the row dbObject do input validation. In case validation rules are set but their criteria is not met
168+
then save() will return an error with its description. For example:
169+
```php
170+
$id = $user->save();
171+
if (!$id) {
172+
// show all validation errors
173+
print_r ($user->errors);
174+
echo $db->getLastQuery();
175+
echo $db->getLastError();
176+
}
177+
echo "user were created with id" . $id;
178+
```
179+
Validation rules must be defined in $dbFields array.
180+
```php
181+
protected $dbFields = Array (
182+
'login' => Array ('text', 'required'),
183+
'password' => Array ('text'),
184+
'createdAt' => Array ('datetime'),
185+
'updatedAt' => Array ('datetime'),
186+
'custom' => Array ('/^test/'),
187+
);
188+
```
189+
First parameter is a field type. Types could be the one of following: text, bool, int, datetime or a custom regexp.
190+
Second parameter is 'required' and its defines that following entry field be always defined.
191+
147192
###Array as return values
148-
TBD
149-
###2array and 2json
150-
TBD
193+
dbObject can return its data as array instead of object. To do that ArrayBuilder() function should be used in the beginning of the call.
194+
```php
195+
$user = user::ArrayBuilder()->byId (1);
196+
echo $user['login'];
197+
198+
$users = user::ArrayBuilder()->orderBy ("id", "desc")->get ();
199+
foreach ($users as $u)
200+
echo $u['login'];
201+
```
202+
203+
Following call will return data only of the called instance without any relations data. Use with() function to include relation data as well.
204+
205+
```php
206+
$user = user::ArrayBuilder()->with ("product")->byId (1);
207+
print_r ($user['products']);
208+
```
209+
###Object serialization
210+
211+
Object could be easily converted to a json string or an array.
212+
213+
```php
214+
$user = user::byId (1);
215+
// echo will display json representation of an object
216+
echo $user;
217+
// userJson will contain json representation of an object
218+
$userJson = $user->toJson ();
219+
// userArray will contain array representation of an object
220+
$userArray = $user->toArray ();
221+
```
222+
223+
###Examples
224+
225+
Please look for a use examples in tests/dbObjectTests.php file and test models inside the tests/models/ directory

0 commit comments

Comments
 (0)