Бортовой журнал Ктулху

Yii2 и нестандартный пользователь в БД при использовании ActiveRecord | Nonstandard DB user in ActiveRecord in Yii2

Часто (хотя, у кого как) при использовании баз данных для упорядочивания и/или группировки таблиц используют префиксы имени владельца.

По умолчанию в MS SQL используется пользователь DBO - database owner. Но также можно использовать и других пользователей для удобства выдачи прав и разделения доступов. И тут возникает первая сложность при попытке подключиться к таблице нестандартного пользователя.

Хотя, на самом деле, никаких сложностей, просто нужно добавить в модели префикс пользователя к имени таблицы.

 

В этом примере таблица tblUsers будет находиться у обоих пользователей (кстати, даже не знаю, можно ли в таком случае использовать одинаковые названия таблиц но пусть будет), но доступ нужно получить к таблице пользователя khtulhu.

image0 1

По умолчанию Yii будет читать таблицу пользователя dbo. 

Что бы читать таблицу пользователя khtulhu, его префикс нужно указать в имени таблицы в модели.

# было
public static function tableName(){
    return 'tblUsers';
 }
# стало
public static function tableName(){
    return 'khtulhu.tblUsers';
}

Вот так-то.