2015-07-01 57 views
1

我用照亮5.1 * - (實際上是「laravel/lumen-framework": "5.1.*」)雄辯模型指定者()失去鍵入按鍵

我的問題是,我有不同的行爲時,我對兩種不同做

var_dump($model->toArray()); 

環境(但是具有類似的php version 5.6.8-1~dotdeb+wheezy.1 vs PHP 5.6.10-1+deb.sury.org~trusty+1)以及相同的供應商包)。

在第一環境,整數屬性將是int:

array:4 [▼ 
    "id" => 1 
    "value" => "email" 
    "standard" => 1 
    "order" => 0 
] 

在第二個,它的字符串:

array:4 [▼ 
    "id" => "1" 
    "value" => "email" 
    "standard" => "1" 
    "order" => "0" 
] 

任何想法?

+3

首先,你應該檢查一個投影效果不好的實際上是否正確地從數據庫中提取數據。這取決於你使用的MySQL驅動程序。 MySQLND正在做正確的事情,而libmysql將所有值作爲字符串獲取,所以情況可能如此。因此,首先嚐試在轉換爲數組之前在第二個環境中轉儲模型,並檢查其屬性是否正確。我敢打賭,他們不是;) –

+0

與此同時,我找到你正在談論的解決方案。安裝apt-get安裝php5-mysqlnd解決了這個問題。我認爲這是與toArray方法的界限,他們應該把mysqlnd作爲一個依賴或至少作爲一個建議。 – catalinux

+0

事實上,這不會干擾toArray()方法,正如我已經提到的。不同之處在於數據庫連接器要麼以字符串(libmysql)獲取所有數據,要麼將值轉換爲例如整數(mysqlnd)。因此,這純粹是服務器端問題,您不能通過使用composer deps來解決,因爲它是關於Linux包的,而不是PHP。 –

回答

0

問題在於你使用的MySQL驅動程序。 MySQLND獲取並鑄造值,而libmysql只是將所有值作爲字符串獲取。它與Laravel本身無關,與PHP無關。這只是數據庫連接器用於與數據庫交談的問題。簡單的 apt-get install php5-mysqlnd應該做的伎倆。