db_select и префиксы таблиц

Главные вкладки

Аватар пользователя AndreyWeb AndreyWeb 24 августа 2011 в 17:06

Привет!

Возник у меня внезапно вот такой вопрос.
Есть Друпал 7, смотрит на таблички с префиксом drupal.
Есть данные, в той же базе, хранятся в табличках с префиксом data.

Естественно, db_select таблички с префиксом data не видит и пытается доставить им префикс drupal.
Вопрос в том, как сделать так, чтоб db_select их "увидела"?
Где-то можно найти, что она там в массив $options принимает?

Вопрос из чистого любопытства, ибо решить эту задачу можно несколькими способами.

Комментарии

Аватар пользователя AndreyWeb AndreyWeb 25 августа 2011 в 15:39

"RxB" wrote:
А прописать префиксы в settings.php не?

Там в таблице просто данные, добавленные специальной программой, не друпаловские сущности.

Аватар пользователя AndreyWeb AndreyWeb 25 августа 2011 в 19:20

"RxB" wrote:
и?

Куда нужный префикс прописать?

   'prefix' => array(
     'default'   => 'main_',
     'users'     => 'shared_',
     'sessions'  => 'shared_',
     'role'      => 'shared_',
     'authmap'   => 'shared_',
   ),
Аватар пользователя AndreyWeb AndreyWeb 26 августа 2011 в 15:35

"RxB" wrote:
Вероятно в этот массив, комментариев рядом с ним не замечаете?

Из комментариев не понятно, как прописать таблицы, о которых Друпал слыхом не слыхивал.
Предлагаете в 'default' => 'my_prefix'?
Или как-то можно свою секцию для префиса определить, например 'my_data' => 'my_prefix'?

Аватар пользователя Eugene_M Eugene_M 21 сентября 2011 в 11:49

Если есть таблицы:
d7__users
d7__node
... (остальные таблицы drupal 7)
data_table1
data_table2
prefix2_table3

то в settings.php нужно прописать:

<?php
$databases
['default']['default'] = array(
  
'driver' => 'mysql',
  
'database' => 'databasename',
  
'username' => 'username',
  
'password' => 'password',
  
'host' => 'localhost',
   
'prefix' => array(
     
'default'   => 'd7__',
     
'table1'     => 'data_',
     
'table2'     => 'data_',
     
'table3'     => 'prefix2_',
   ),
  
'collation' => 'utf8_general_ci',
);
?>

! это касаемо, если все таблицы в одной БД лежат.

Аватар пользователя AndreyWeb AndreyWeb 21 сентября 2011 в 13:45

"Eugene_M" wrote:
это касаемо, если все таблицы в одной БД лежат.

Да, спасибо, уже разобрался.
Я сначала решил, что там можно только те таблицы прописывать, что у Друпала при установке есть.