Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 06.05.2015 08:23:40

Rodion

[Гайд] Подключение MSSQL на windows к laravel под ubuntu

Итак, потратив на все это дело несколько дней, я таки все настроил и ознакомился с кучей подводных камней. Решил весь процесс описать, чтобы сэкономить кому-нибудь время.

После установки и настройки лары на ubuntu, ставим пакет freetds

apt-get install freetds-bin

и адаптер для подключения его к php sybase

apt-get install php5-mssql

P.S. репозиторий иногда может быть недоступным, просто подождите.

Далее перезагружаем apache

service apache2 restart

И идем в /etc/freetds, открываем файл настроек freetds.conf

В конец добавляем

[MYMSSQLSERVER]
host = #ip адрес хоста на котором стоит mssql
client charset = UTF-8 # Для того, чтобы freetds конвертировал все в UTF-8
tds version = 7.2 # Версия протокола TDS, ставим меньше в зависимости от версии вашего MSSQL сервера, у меня это 2014
# Далее, в зависимости от того, идет у вас подключение через порт или инстанс, вбиваем одну из след. настроек, но НЕ КОМБИНИРУЕМ их
port = # ваш порт, по дефолту это 1433
instance = # название вашего инстанса, то есть, если полный адрес вашего сервера "10.10.10.10/MSSERVER", значит ваш инстанс MSSERVER

Сохраняем конфиг и выходим, все freetds мы настроили.

Теперь в ларе(на примере версии 4.2) переходим в настройки баз данных(/app/config/database.php) и вводим след. настройки

'default' => 'sqlsrv', //Естественно выставляем использование MSSQL по дефолту

'sqlsrv' => array(
	'driver'   => 'sqlsrv',
	'host'     => '', //Здесь вводим название нашей конфигурации из конфига freetds, для меня это MYMSSQLSERVER
	'database' => '', //Какую БД использовать
	'username' => '', //Имя пользователя(проверьте есть ли у него права доступа к выбранной БД)
	'password' => ', //Пароль
	'prefix'   => '',
),

Все, лара настроена и готова к работе с удаленным MSSQL сервером. Дальше я разберу пару подводных камней.

Если массив данных из таблицы возвращается кракозябрами, то конвертируем его в UTF-8 с помощью функции, к сожалению более адекватного решения этой проблемы я пока не нашел.

public static function utf8_converter($array)
{
	    array_walk_recursive($array, function(&$item, $key){
	        if(!mb_detect_encoding($item, 'utf-8', true)){
	                $item = utf8_encode($item);
	        }
	    });
	 
	 return $array;
}

Далее, могут возникать ошибки инсерта, если БД вы сгенерировали не с помощью лары, то в поля timestamps в ней отсутствуют. Просто вырубаем их в нужной модели:

public $timestamps = false;

На этом пока все, если встречу еще что-то тему дополню.

#2 06.05.2015 10:01:45

Re: [Гайд] Подключение MSSQL на windows к laravel под ubuntu

Почему бы вам не оформить это в виде статьи и не выложить на сайт?
https://laravel.ru/compose

Не в сети

#3 06.05.2015 12:31:47

Rodion

Re: [Гайд] Подключение MSSQL на windows к laravel под ubuntu

Можно, но чуть позже, сейчас я все еще занимаюсь этим проектом, как только доделаю, тогда имеет смысл, ибо я уверен что еще что-нибудь да вылезет.

Подвал раздела