2015-11-03 211 views
0

就在我開始之前,我一直在試圖弄清楚這一點,並且點擊了幾乎所有的谷歌鏈接,並且我已經閱讀了幾乎所有關於此的其他問題。但我卡住了,因爲正在爲此提出的捆綁包已過期。所以請和我一起裸照。將Doctrine連接到MS SQL數據庫

好吧,我正在創建一個網站。它是Microsoft Azure上託管的symfony2應用程序。我想要做的是能夠使用教義當然從數據庫中獲取和創建用戶。

現在從我一直在閱讀,連接到這種類型的數據庫,我必須使用稱爲「PDO_dblib」的驅動程序。

我已經安裝了這個包,因爲它似乎是唯一一個仍然活躍,不要引用我。

https://github.com/realestateconz/MssqlBundle

現在我在我的供應商的文件夾中安裝這個,這是存儲它的正確位置?像這樣:

Project/ 
    app/ 
    src/ 
    vendor/ 
     realestate/ 

當然,我加入了捆綁到AppKernel像這樣:

new Realestate\MssqlBundle\RealestateMssqlBundle(); 

以及最後但並非最不重要這裏是我在我的配置文件:

doctrine: 
    dbal: 
     default_connection:  default 
     connections: 
      default: 
       driver_class: Realestate\MssqlBundle\Driver\PDODblib\Driver 
       host:   %database_host% 
       dbname:   %database_prefix%%database_name% 
       user:   %database_user% 
       password:  %database_password% 

所以我在這裏做的是在說什麼是使用這個驅動程序的原則?看不到還有什麼可能。

我也爲連接設置聲明瞭我的parameters.yml。 PS:我正在開發Linux Mint上的Dev!

之前,我想這包我也跑的throught該網站的步驟步驟:https://dunglas.fr/2014/01/connection-to-a-ms-sql-server-from-symfony-doctrine-on-mac-or-linux/

但它再次被扔的錯誤,生病後的錯誤,我拿到樓下! 因此,爲了記錄我已經安裝了freetds和php5-sybase。

是我得到的錯誤是這樣的:

[Symfony\Component\Debug\Exception\ContextErrorException]                
Warning: class_implements(): Class Realestate\MssqlBundle\Driver\PDODlib\Driver does not exist and could not be loaded 

而且這個當我嘗試做一個: PHP應用程序/控制檯學說:數據庫:創建

(我有我的實體成立)

,但我得到的命令以下錯誤創建:

[Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]             
You have requested a non-existent parameter "database_prefix". Did you mean one of these: "database_port", "database_user"? 

我一直在試圖讓這個工作在過去的幾天,任何幫助將是太棒了!任何需要的信息都可以隨意問到!

+0

如何你安裝了捆綁包嗎?使用作曲家? –

+0

我不能找到需求線,所以我git克隆到我的供應商文件夾,會導致問題? – Calvin

+0

如果你沒有使用作曲家,那麼你的自動加載文件可能沒有被更新,這意味着你將無法加載該文件夾中的文件。你可以嘗試手動更新這個文件,但是請自己幫忙,讓作曲家工作,這樣你就可以使用作曲家來安裝它,這將使一切變得更加容易 –

回答

0

根據你的錯誤代碼:

[Symfony的\分量\ DependencyInjection \異常\ ParameterNotFoundException]
您已請求不存在的參數 「database_prefix」。你的意思是其中之一:「database_port」,「database_user」?

看來你錯過了配置參數「database_prefix」。

如果數據庫中的表格有單位前綴,例如「core_user」,「core_tasks」...如果沒有,您可以在文件parameters.yml中配置此參數,您可以刪除文件config.yml中的dbname行中的參數% database_prefix %

這裏是我供你參考代碼片段:

Config.yml doctrine: dbal: default_connection: default connections: default: driver_class: Realestate\MssqlBundle\Driver\PDODblib\Driver host: %database_host% port: %database_port% dbname: %database_name% user: %database_user% password: %database_password% parameters.yml: parameters: database_host: {your_sql_server_name}.database.windows.net database_port: 1433 database_name: {database_name} database_user: {username} database_password: {password} 而測試查詢在控制器 $conn = $this->get('database_connection'); $data = $conn->fetchAll('SELECT * FROM Testtable'); var_dump($data);