我有幾個foreach循環來顯示遊戲中的所有玩家。表中有10個玩家,其中一個int類型的id列自動遞增。代碼如下所示:不同排序順序的Laravel在所有服務器上的雄辯()在不同的服務器上
foreach(Player::all() as $player) {
echo $player->id;
}
在我開發的Mac,MySQL的70年1月5日,我得到:1 2 3 ... 在我的督促服務器,MySQL 31年5月5日,我得到:1 10 2 3 4 ....
這是在我的代碼中的其他地方是一致的。現在,我明白這是一個字母數字排序。問題是:爲什麼?我可以在服務器上打開什麼來使其與我的開發機器匹配,而無需執行寬泛的代碼更改?
我使用PHP 5.4,Apache的2.4,Laravel 4.0.5與雄辯
更新:
我找到了另一種症狀到這一點,這實際上可能是問題的根源:在分析客戶端AJAX調用服務器,我發現值從dev服務器返回爲int,但是作爲來自prod服務器的字符串 - 導致大量的錯誤行爲。這解釋了爲什麼我得到一個ASCII排序。但是,問題是:我需要在prod服務器上「修復」這個工作嗎?
如果不定義排序,你會得到一個隨機的排序,因爲它顯然沒有關係。所以...定義一個' - > orderBy()'如果它是? – Wrikken
在爲我的所有查詢添加 - > orderBy()之前,我想了解它們之間的區別。對我而言,這可能比本地問題的實際解決更重要 - 我可能會遇到源自服務器屬性的其他類似問題。 –
正如我所說:你沒有指定一個訂單,Laravel沒有指定一個訂單,所以數據庫將得到任何一個訂單似乎最有效的值,這很可能與訂單中的訂單有關他們已經寫在磁盤上了。這是_often_主鍵的順序,但是,如果不指定it_,則不能保證。 – Wrikken