Database api drupal а з базою даних в сьомому друпалі

У сьомому друпалі для роботи з базою даних можна використовувати спеціальне API. Його переваги-це: простота написання коду, кроссплатформенность написаних запитів, зведення до мінімуму помилок. З особистого досвіду: було написано близько 10 складних самописних модулів, написаних з використанням DataBase API Drupal 7, і працюють на MySql. Після перенесення сайту на MsSql, з використання технології Microsoft Azure - треба було внести дрібні поправки всього в кілька запитів, а не переписувати по 10-20 запитів в кожному модулі. Приклади роботи в шостій версії Drupal розглядати не будемо, тільки для 7. Спочатку подивимося на основні методи, а далі вже Рассотрім повноцінні запити:

Пояснення: всім цим чотирьом функціям в як перший аргумент передається назва таблиці, без префікса. У першому випадку, з вибіркою, другим аргументом вказується псевдонім даний таблиці, він обов'язковий навіть при вибірці з однієї таблиці. Вказуйте будь-хто, наприклад перша буква в назві таблиці.

Це заміна звичного вам where.

За замовчуванням знак рівності годі й ставіть.Но якщо потрібно використовувати оператор більше, менше, менше або дорівнює і т.п. - замість знака "=" ставите ">". наприклад. Але і звичний where ніхто не запрещал.Іспользуется так, тут простіше.

У поясненні, думаю, не потребує. Вибірка полів, оператор fields:

Ось тут і вказується псевдонім, про який ми говорили раніше. Сортування:

Підрахунок кількість рядків:

Умови в запиті:

Вибірка з декількох таблиць-он же join

Ось в основному це всё.Теперь як це все працює.

Ось в принципі і все. Оператор having, наприклад, теж дуже легко відпрацьовується. Оператор limit. Замінений на range

Я наведу приклад кількох реальних запитів, щоб на прикладі вам було зрозуміло як все це діє: Проста вибірка даних:

Порадьте як уникнути конфлікту в БД.
В одній базі містяться таблиці Друпал і форуму phpbb. Таблиці з різними префіксами. Підключатися до бази безпосередньо - ламерство.
Для різнойменних таблиць працює конструкція в settings.php
'Driver' => 'mysql',
'Prefix' => array (
'Default' => 'dr7_',
'Table1' => 'phpbb_',
'Table2' => 'phpbb_',
)
Але є 2 таблиці users. У запитах префікси не вказуються, відповідно має місце конфлікт однойменних таблиць.
Як це можна вирішити?

Проблема вирішена.
Використовував уявлення mysql

Хороші приклади, Дякую!

Добрий день.
У вас помилка, в тексті ви пишете що "Оператор limit. Замінений на range", а в прикладі використовуєте "limit".
Дякую за статтю!

Теги матеріалу

Статті по темі

Популярне

Схожі статті