Похоже, что RedBeanPHP не может обрабатывать строку SQL-запроса, как другие функции, и я пытаюсь найти лучший способ обойти это.
Допустим, у меня есть следующий запрос (упрощенный)
Код: Выделить всё
SELECT id, name, email FROM tbluser WHERE id > 5000;
Вместо того, чтобы возвращать все данные и затем подсчитывать их, я хочу ТОЛЬКО сначала получить счетчик (для целей разбиения на страницы). Я не могу просто передать приведенный выше SQL в R::count(), потому что он не работает с целыми строками.
Код: Выделить всё
//valid
$count = R::count('tbluser', 'WHERE id > 5000');
//not valid
$sql = "SELECT id, name, email FROM tbluser WHERE id > 5000";
$count = R::count($sql);
Я предпочитаю использовать запрос как целую строку SQL, чтобы упростить его повторное использование, но это кажется невозможным. Я могу принять только изменение поля SELECT, но не могу разбить тело на части, поскольку оно слишком сложное.
Поэтому дальше я подумал попробовать просто заменить заголовок выбора на COUNT(*) SQL
Код: Выделить всё
$sql = "SELECT COUNT(*) FROM tbluser WHERE id > 5000";
//this doesn't exactly work, it returns 1 rather than the actual count
$count = R::exec($sql);
//however this DOES work, but is pretty sloppy
$count = R::getAll($sql)[0]["COUNT(*)"];
Любые идеи о том, как заставить работать R::count() (кажется, не поддерживается для целых строк SQL) или как заставить R: :exec(), чтобы вернуть фактическое количество?
Подробнее здесь:
https://stackoverflow.com/questions/781 ... redbeanphp