|
1 | | -# Ulole ORM |
2 | | -## A PHP ORM |
3 | | - |
4 | | -Features: |
5 | | -- Multi Database support |
6 | | -- Supports many SQL Server (MySQL, Postgre) |
7 | | -- Migration System |
8 | | - |
| 1 | +# Ulole-ORM `2.0` |
| 2 | +## Getting started |
9 | 3 |
|
| 4 | +### User.php |
10 | 5 | ```php |
11 | 6 | <?php |
12 | | -modules\uloleorm\InitDatabases::init("main", [ |
13 | | - "driver" => "mysql", |
14 | | - "username"=> "USERNAME", |
15 | | - "password"=> "PASSWORD", |
16 | | - "database"=> "DATABASE", |
17 | | - "server" => "SERVER", |
18 | | - "port" => 3306 |
19 | | -]) |
20 | | -``` |
| 7 | +use de\interaapps\ulole\orm\ORMModel; |
| 8 | + |
| 9 | +class User { |
| 10 | + use ORMModel; |
21 | 11 |
|
22 | | -### Database |
| 12 | + public $id; |
| 13 | + public $name; |
| 14 | + public $password; |
| 15 | + public $description; |
| 16 | +} |
| 17 | +``` |
| 18 | +### example.php |
23 | 19 | ```php |
24 | 20 | <?php |
25 | | -namespace databases; |
| 21 | +UloleORM::database("main", new Database( |
| 22 | + 'username', |
| 23 | + 'password', |
| 24 | + 'database', |
| 25 | + 'host', /* PORT: default localhost */ |
| 26 | + 3306, /* PORT: default 3306 */ |
| 27 | + 'mysql' /* DRIVER: default mysql (Every PDO Driver usable. ) */ |
| 28 | +)); |
26 | 29 |
|
27 | | -use modules\uloleorm\Table; |
28 | | -class TestTable extends Table { |
| 30 | +UloleORM::register(/*table-name*/ "user", /*Model class*/ User::class); |
29 | 31 |
|
30 | | - public $username, |
31 | | - $password; |
32 | | - |
33 | | - public function database() { |
34 | | - $this->_table_name_ = "user"; |
35 | | - // The __database__ default value is "main" |
36 | | - $this->__database__ = "main"; |
37 | | - } |
| 32 | +// Inserting into table |
| 33 | +$user = new User; |
| 34 | +$user->name = "Okay"; |
| 35 | +$user->save(); |
38 | 36 |
|
39 | | -} |
40 | | -``` |
| 37 | +/* |
| 38 | + Fetching a single table entry |
| 39 | +*/ |
41 | 40 |
|
42 | | -```php |
43 | | -<?php |
44 | | -// New |
45 | | -$newUser = new databases\TestTable; |
46 | | -$newUser->username = "User"; |
47 | | -$newUser->password = "1234"; |
48 | | -$newUser->save(); |
49 | | - |
50 | | -// Select |
51 | | -$user = new databases\TestTable; |
52 | | -foreach ($user->select("*")->where("username", "User")->get() as $row) { |
53 | | - echo $row["username"]; |
| 41 | +$user = User::table() |
| 42 | + ->where("id", 2) |
| 43 | + ->get(); |
| 44 | + |
| 45 | +echo $user->name; |
| 46 | + |
| 47 | +/* |
| 48 | + Fetching multible entries |
| 49 | +*/ |
| 50 | +$users = User::table() |
| 51 | + ->like("description", "") |
| 52 | + ->all(); |
| 53 | + |
| 54 | +foreach ($users as $user) { |
| 55 | + echo $user->name; |
54 | 56 | } |
55 | 57 |
|
56 | | -// Select First |
57 | | -$user = new databases\TestTable; |
58 | | -$row = ($user->select("*")->where("username", "User")->first(); |
59 | | -echo $row["username"]; |
| 58 | + |
| 59 | +/* |
| 60 | + Updating |
| 61 | +*/ |
| 62 | +User::table() |
| 63 | + ->where("id", 2) |
| 64 | + ->update(); |
| 65 | + |
| 66 | +// Updating entry |
| 67 | +$user = User::table()->where("id", "1")->get(); |
| 68 | +$user->name = "ninel"; |
| 69 | +$user->save(); |
| 70 | + |
| 71 | +/* |
| 72 | + Deleting |
| 73 | +*/ |
| 74 | + |
| 75 | +User::table() |
| 76 | + ->where("id", 2) |
| 77 | + ->delete(); |
| 78 | + |
| 79 | +// Deleting entry |
| 80 | +$user = User::table()->where("id", "1")->get(); |
| 81 | +$user->delete(); |
60 | 82 | ``` |
61 | 83 |
|
62 | | -### Migration |
| 84 | +## Selection |
63 | 85 | ```php |
64 | 86 | <?php |
65 | | -namespace databases\migrate; |
66 | | - |
67 | | -use modules\uloleorm\migrate\Migrate; |
68 | | - |
69 | | -class TestTable extends Migrate { |
70 | | - public function database() { |
71 | | - $this->create('user', function($table) { |
72 | | - $table->int("id")->ai(); |
73 | | - $table->string("username"); |
74 | | - $table->string("password", 255); |
75 | | - $table->enum("enumTest", ["val1","val2"]); |
76 | | - }); |
77 | | - } |
78 | | -} |
79 | | -``` |
| 87 | +User::table() |
| 88 | + // Simple where. Operator: '=' |
| 89 | + ->where("name", "Guenter") |
| 90 | + // Where with own opertator. It's also an 'AND' one because we already used where once |
| 91 | + ->where("name", "=", "Guenter") |
| 92 | + |
| 93 | + ->like("name", "=", "Guenter") |
| 94 | + |
| 95 | + ->and(function($query){ |
| 96 | + $query->where("id", "1"); |
| 97 | + }) |
| 98 | + |
| 99 | + ->or(function($query){ |
| 100 | + $query->where("id", "1"); |
| 101 | + }) |
| 102 | + |
| 103 | + // Nesting |
| 104 | + ->or(function($query){ |
| 105 | + $query->or(function($query){ |
| 106 | + $query->and(function($query){ |
| 107 | + $query->or(function($query){ |
| 108 | + $query->where("name", "lol"); |
| 109 | + }) |
| 110 | + }) |
| 111 | + }) |
| 112 | + }) |
| 113 | + |
| 114 | + // Orders by id in a descending order |
| 115 | + ->orderBy("id", true) |
| 116 | + // Limit |
| 117 | + ->limit(10) |
| 118 | + // Offset (requires a limit to be set) |
| 119 | + ->offset(0) |
| 120 | + ->all(); |
| 121 | +``` |
0 commit comments