Laravel ORM: запрос без префикса таблицы - PullRequest
0 голосов
/ 09 июля 2019

Я работаю над проектом, в котором мне нужно интегрировать некоторые таблицы из WordPress и другие системы.Чтобы настроить базу данных для моего проекта Laravel, я решил использовать префикс таблиц, и для таблиц моего проекта он работает нормально.

Моя проблема в том, что мне приходится работать с таблицами из других систем, использующих Laravel.Например, приведенный ниже запрос добавляет к нему префикс таблицы моего проекта:

$item = DB::table('cnp_item')
                ->where('code', $row[1])
                ->first();

Вместо запроса к таблице cnp_item он запрашивает таблицу laravel_cnp_item, которой не существует.

Iзнаю, что это имеет смысл, так как я настроил префикс таблицы.У меня вопрос: могу ли я что-нибудь сделать в некоторых запросах, чтобы игнорировать префикс моей таблицы.

Спасибо за любую помощь

1 Ответ

0 голосов
/ 09 июля 2019

Вы можете определить другое соединение в config/database.php, в котором пропущена настройка prefix:

'connections' => [
  'mysql' => [
    ...
    'prefix' => 'laravel',
    ...
  ], 'alternate' => [
    ...
    'prefix' => '',
    ...
  ]
],

Затем, если вы хотите запросить таблицу, которая не имеет этого соединения, переключитесь на нее на лету, используя DB::connection():

$item = DB::connection('alternate')->table('cnp_item')->where('code', $row[1])->first();

Или, если вы используете Model, вы должны иметь возможность определять connection и table, поэтому вам просто нужно сделать:

class CNPItem extends Model {
  protected $connection = 'alternate';
  protected $table = 'cnp_items';
  ...
}

Тогда вы просто запросите вот так:

$item = CNPItem::where('code', $row[1])->first();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...