Класс обертки Mysqli by Koenig (Допилить)

9.18K
.
Koenig, либо я слепой, либо нет поддержки OR.
по по поводу <, >, <= etc, попробуй сделать как в джанге, т.е. так
columnName__lte = value

преобразовывать в
columnName <= value

и еще, было бы клево делать цепочку из требований. например в ядре дежит класс с выборкой всех юзером, мы берем его, добавляе еще условие, что выбираем только мужиков. так во мнгогих орм сделано.
.
(\/)____o_O____(\/)
flaky, это есть, то есть выбрать мужиков получиться sex=male , а например age>21 не получиться, только если напрямую запрос отдавать, а не формировать запрос методами
.
Koenig, почему возвраст не прокатит? или еще не написал сравнение?
.
Можно описать все методы да и всё.
Будит краcивый method chaining построителя.

->whereLte('column', 3)

->orWhereBetween('column', 1, 50)
->orWhereIn('column' [1, 2, 3])

->where(function($query) {
    $query->where('column', '=', ...);
    $query->orWhere('column', '=', ...);
})


Ну и так далее. И да, убери set_* у методов, он ни к чему.
.
L!MP, прикольно, но как по мне затратно в написании, т.е. в количестве символов
.
L!MP
flaky, так интелисенс же 90% из написанного выше, будит подставляться в автокомпоите.
Хотя согласен, первая задача Query Builder`a - это выразительность и лаконичность.
--
Я как-то пару раз писал но бросал гг. Есть где-то простой AR в один класс который позволяет делать вот такие штуки:

// сохраняем пользователя
(new DB('users', $_POST))->save();

// обновляем обьект в БД
$user = (new DB('users'))->find(3);
$user->login = 'Login';
$user->password = 'Password';
$user->save();

// получаем все обьекты (задейсвован итератор)
foreach (new DB('users') as $user) {
    echo $user->login;
}

// batch - операции
(new DB('users'))->whereGte('age', 18)->update($_POST);

// или такая фича

$message = (new DB('message'))->find(3);

--$message; // получаем обьект пред.сообщения
++$message; // след.сообщение

// ну и в куче

$users = (new DB('users'));

if (count($users)) {
    foreach ($users->paginate(10) as $user) {
        echo $user->login;
    }
}
.
L!MP, довольно неплохо. понравилось с -- и ++. а что будет если это первый обьект и вызвать --?
.
L!MP
flaky, там вызывается SELECT * FROM table WHERE pk < id LIMIT 1 и результат будит такой же, как если бы мы вызвали просто find() по id. Т.е либо обьект, либо null
.
L!MP, а че забросил? как по мне отлично. скоопируйтесь с Koenig напишите хороший query builder
.
flaky, да тыщи их уже. И без нас гг.
Хотя х.з, завтра найду код, пройдусь напильником, м.б доведу до ума.
Всего: 362