composer require compolomus/light-sql-query-builder
useCompolomus\LSQLQueryBuilder\Builder;
require__DIR__ . '/vendor/autoload.php';
$builder = newBuilder('users');
echo'---SELECT---<br><br>';
echo$builder->select(['id' => 'user_id', 'name', 'email'])
->where([['id', '=', 15], ['firm_id', 'not in', [1, 2, 3]]])
->where([['age', '>', 17], ['friends', '>=', 177]], 'or')
->group(['age', 'friends'])
->order(['salary', 'experience'], 'desc')
->asc(['age', 'size'])
->limit(5, 10, 'page');
/* SELECT `user_id` AS `id`,`name`,`email` FROM `users` WHERE (`id` = :59ee533076W AND `firm_id` NOT IN :59ee571790W) AND (`age` > :592cd57379W OR `friends` >= :592cd61484W) GROUP BY `age`,`friends` ORDER BY `age`,`size` ASC, `salary`,`experience` DESC LIMIT 45 OFFSET 5*//* Support 89 MYSQL Field function[one argument] (count, min, max... etc)*/echo'<br><br>---COUNT#1---<br><br>';
echo$builder->select()
->setFunction('*', 'count')
->where()
->add('age', '=', 32)
->group(['position'])
->order(['name'], 'desc')
->limit(10, 20);
/* SELECT COUNT(*) FROM `users` WHERE (`age` = :598bf03980W) GROUP BY `position` ORDER BY `name` DESC LIMIT 20 OFFSET 10*/echo'<br><br>---COUNT#2---<br><br>';
echo$builder->select(['count' => '*|count']);
/* SELECT COUNT(*) AS `count` FROM `users`*/echo'<br><br>---DELETE BY ID---<br><br>';
echo$builder->delete(5);
/* DELETE FROM `users` WHERE (`id` = :593b785726W)*/echo'<br><br>---DELETE BY FIELD---<br><br>';
echo$builder->delete(15, 'userid');
/* DELETE FROM `users` WHERE (`userid` = :593b756573W)*/echo'<br><br>---DELETE WITH WHERE---<br><br>';
echo$builder->delete()
->where()
->add('rank', 'between', [12, 15]);
/* DELETE FROM `users` WHERE (`rank` BETWEEN :5979f19816W)*/echo'<br><br>---INSERT FIELDS AND VALUES---<br><br>';
echo$builder->insert()
->fields(['name', 'email', 'age'])
->values(['Vasya', 'vasya@gmail.com', 22])
->values(['Petya', 'petya@gmail.com', 24]);
/* INSERT INTO `users` (`name`,`email`,`age`) VALUES (:59b8773308I,:59b8798017I,:59b8791062I), (:59b8754434I,:59b8727155I,:59b8728332I)*/echo'<br><br>---INSERT ARRAY(FIELDS => VALUES)---<br><br>';
echo$builder->insert([
'name' => 'Oleg',
'email' => 'oleg@gmail.com',
'age' => 33
]);
/* INSERT INTO `users` (`name`,`email`,`age`) VALUES (:59b8702032I,:59b8702274I,:59b8735242I)*/echo'<br><br>---INSERT PREPARE WITH FIELDS---<br><br>';
echo$builder->insert()
->fields(['name', 'email', 'age']);
/* INSERT INTO `users` (`name`,`email`,`age`) VALUES (?,?,?)*/echo'<br><br>---UPDATE#1---<br><br>';
echo$builder->update([
'user' => 11,
'post' => 345,
'text' => 'Text'
])
->where()
->add('test', 'regexp', '^.....$');
/* UPDATE `users` SET `user` = :5923849640U, `post` = :5923828461U, `text` = :5923846245U WHERE (`test` REGEXP :5923827411W)*/echo'<br><br>---UPDATE#2---<br><br>';
echo$builder->update()
->fields(['name', 'subname'])
->values(['test', 'testus'])
->where([], 'or')
->add('growth', '<', 180)
->add('growth', '>', 140)
->order(['name'], 'desc')
->limit(10, 20, 'offset');
/* UPDATE `users` SET `name` = :5923864911U, `subname` = :5923845311U WHERE (`growth` < :5923863542W OR `growth` > :5923879798W) ORDER BY `name` DESC LIMIT 10 OFFSET 20*/echo'<br><br>---UPDATE#3---<br><br>';
echo$builder->update()
->fields(['name', 'email', 'age']);
/* UPDATE `users` SET `name` = ?,`email` = ?,`age` = ?*/echo'<br><br>---JOIN#1---<br><br>';
echo$builder->select()
->join('test', 't', [['id', 'tid'], ['did', 'mid']], 'cross');
/* SELECT * FROM `users` CROSS JOIN `test` AS `t` ON `users`.`id` = `test`.`tid` AND `users`.`did` = `test`.`mid`*/echo'<br><br>---JOIN#2---<br><br>';
echo$builder->select()
->join('test2')
->addOn([['fid', 'gid']])
->setType('right');
/* SELECT * FROM `users` RIGHT JOIN `test2` ON `users`.`fid` = `test2`.`gid`*/echo'<br><br>---JOIN#3---<br><br>';
echo$builder->select()
->join('test3')
->using('qwerty');
/* SELECT * FROM `users` LEFT JOIN `test3` USING(`qwerty`)*/echo'<br><br>---JOIN#4---<br><br>';
echo$builder->select()
->join('test4')
->addOn([['rid', 'vid']])
->setAlias('t4')
->setType('cross')
->join('test5', 't5', [['aid', 'mid'], ['bid', 'cid']], 'inner');
/* SELECT * FROM `users` CROSS JOIN `test4` AS `t4` INNER JOIN `test5` AS `t5` ON `users`.`rid` = `test4`.`vid` AND `users`.`aid` = `test5`.`mid` AND `users`.`bid` = `test5`.`cid`*/echo'<br><br>---JOIN#5---<br><br>';
echo$builder->select()
->join('testus', 'ts')
->setType('right')
->join('testus2', 'ts2')
->using('user');
/* SELECT * FROM `users` RIGHT JOIN `testus` AS `ts` LEFT JOIN `testus2` AS `ts2` USING(`user`)*/echo'<br><br>---PLACEHOLDERS---<br><br>';
echo'<pre>' . print_r($builder->placeholders(), true) . '</pre>';
/*Array( [:59ee533076W] => 15 [:59ee571790W] => (1,2,3) [:592cd57379W] => 17 [:592cd61484W] => 177 [:598bf03980W] => 32 [:593b785726W] => 5 [:593b756573W] => 15 [:5979f19816W] => 12 AND 15 [:59b8773308I] => Vasya [:59b8798017I] => vasya@gmail.com [:59b8791062I] => 22 [:59b8754434I] => Petya [:59b8727155I] => petya@gmail.com [:59b8728332I] => 24 [:59b8702032I] => Oleg [:59b8702274I] => oleg@gmail.com [:59b8735242I] => 33 [:5923849640U] => 11 [:5923828461U] => 345 [:5923846245U] => Text [:5923827411W] => ^.....$ [:5923864911U] => test [:5923845311U] => testus [:5923863542W] => 180 [:5923879798W] => 140)*/


