Справочная информация:
Среда PHP Mediawiki предоставляет функции для создания операторов SQL, которые будут выполняться в приложении.Создание простого оператора SELECT FROM WHERE легко и хорошо документировано, но я пытаюсь создать оператор JOIN и не понимаю документацию.Примеры фрагментированы и несвязны.
Текущая попытка:
SQL, который я пытаюсь воссоздать, выглядит следующим образом.Используя phpmyadmin, я протестировал этот код и он возвращает нужные мне результаты:
SELECT user.user_id, user.user_name, user.user_real_name, user.user_email
FROM user
LEFT JOIN ipblocks ON user.user_id = ipblocks.ipb_user
WHERE ipblocks.ipb_id IS NULL
Перевод этого в среду Mediawiki выглядит примерно так, но этот код не работает.Документация по функции здесь .
$result = $this->dbr->select(
array( $this->dbr->tableName( 'user' )),
array( 'user_name', 'user_id', 'user_email' ),
array( 'ipb_id' => 'NULL'),
__METHOD__,
array( 'GROUP_BY' => 'user_id DSC' ),
array( 'ipblocks' => array( 'LEFT JOIN', 'user_id=ipb_user' ) )
);
SQL, сгенерированный этим кодом, может быть проверен путем вызова selectSQLText ().Эта функция возвращает сгенерированный SQL, а не выполняет его.Соглашение о вызовах такое же.Это приводит к следующему SQL:
SELECT user_name,user_id,user_email
FROM `user`
WHERE ipb_id = 'NULL'
Я могу понять, почему функция вернула это, но я не понимаю, почему последние два параметра были проигнорированы.Части GROUP_BY и JOIN были проигнорированы.Почему это так и как мне исправить код?
Спасибо.