# DBmodel This library extends the builtin PDO object by several useful features. ## Basic usage For testing create database `test` with user `test` and password `test`. In database create table `test` and insert same testing data. ```sql CREATE TABLE `test` ( `id` int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `created` datetime DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ``` For basic testing run this code ```php query("show tables"); print_r($result); // test results $result = $db->getAll("show databases"); print_r($result); $result = $db->getAll("show tables"); print_r($result); $result = $db->getCol("show tables"); print_r($result); $result = $db->getTableColumns("test"); print_r($result); $result = $db->getRow("select * from test where id = 10"); print_r($result); ?> ``` ## Interactive create MODEL class Create file `creatorModel.php` and paste bellow code ```php interact(); ?> ``` now for each table run `php createModel.php` for interactive creating class for table. ```bash $ php test2.php New model name: Test Table name: test Entity name: test Create MODEL class '/your/project/models/Test.php'? (y - yes, other - no) y Create directory '/your/project/models'? (y - yes, other - no) y Creating MODEL class ... MODEL class created ``` Creator build this MODEL class file ```php array( 'name' => 'test', 'primary_key_name' => 'id', 'allow_attributes' => array( 'name' => 'varchar(255)', 'created' => 'datetime' ) ), ); public function exist($primary_key = null) { return $this->existRecord('test', $primary_key); } public function test($primary_key = null, $data = array()) { return $this->record('test', $primary_key, $data); } public function testBy($colname, $colvalue) { return $this->recordBy('test', $colname, $colvalue); } public function testSave($data = array()) { return $this->test($this->exist($data) ? $data : null, $data); } public function testEmpty() { return $this->recordEmpty('test'); } public function testAttributes() { return $this->typesAttributes('test'); } public function testCount() { return $this->count('test'); } public function getList($search = array(), $reverse = false, $concat_or = false) { return $this->search('test') ->where($search, $concat_or) ->order(array('id' => $reverse ? 'DESC' : 'ASC')) ->toArray(); } public function testCombo($col_key, $col_value, $add_empty = false) { return $this->search('test') ->toCombo($col_key, $col_value, $add_empty); } } ?> ``` ## Using MODEL class in your project Illustrative example ```php exist(11); print_r($result); // insert new record $result = $test->test(null, array('name' => 'new record')); print_r($result); // update record ID 11 $result = $test->test(11, array('name' => 'updated record')); print_r($result); // get record ID 11 $result = $test->test(11); print_r($result); // delete record ID 11 $result = $test->test(11, null); print_r($result); // get all records $result = $test->getList(); print_r($result); // get combined list of ID and name $result = $test->testCombo('id', 'name'); print_r($result); ?> ```