2017-10-10 98 views
1

我有一個奇怪的情況,在使用Laravel時我從未見過。 我在不同的設置上有相同的代碼庫,IPv4虛擬機中有1個,IPv6虛擬機中有1個。Laravel Query在IPv4 vs上的行爲有所不同。 IPv6環境

這是數據庫中的數據。

enter image description here

這是我的正常查詢。

// $ap = '102030405067'; 
$gw = Gateway::where('cpe_mac','=',$ap)->first(); 
dd($gw); 

在我的IPv4的設置,我得到:

{#541 ▼ 
    +"id": 1 
    +"account_id": "50" 
    +"cpe_mac": "102030405067" 
    +"gw_id": "1956692524588882" 
    +"gw_secret": "zUIyaQfCntob2thL6uR4uQfBvmlCei-5q_oVSJnyeSc" 
    +"fb_wifi_enable": "1" 
    +"created_at": "2017-10-10 14:41:17" 
    +"updated_at": "2017-10-10 14:41:17" 
} 

在我的IPv6的設置,我得到:

null


嘗試#2

dd(Gateway::all());

結果

在IPv4中,我得到了所有返回的記錄。

enter image description here

在IPv6中,我得到了這個空集

Collection {#542 \u25bc #items: [] }

enter image description here


最令人困惑的部分是,其他表似乎做工精細,這gateways似乎成爲唯一導致問題的人。

我三重檢查了我的網關型號名稱和表名。他們拼寫正確。


  • 你們見過這樣的事情之前?

  • 如何進一步調試此問題?

  • 我還應該嘗試什麼?

回答

2

說實話 - 我不認爲這是可能的。

確保在這兩種情況下$ap都包含完全相同的值。您可以使用trim($ap)以防萬一,以確保它不包含額外的特殊字符。

還要確保兩個虛擬機上的數據庫中有相同的數據。現在看起來,在一臺虛擬機中你有數據庫中的數據,其次你不需要。

編輯

這是不可能有直接的問題Laravel,所以:

  • 確保在兩個虛擬機,你必須在你的數據庫中的數據 - 在兩個虛擬機運行SELECT * FROM gateways驗證兩個你有任何記錄(你沒有提到兩個虛擬機使用相同的數據庫,所以我認爲它們是不同的)
  • 請確保在兩個虛擬機中你有有效的數據庫集在你的.env文件中
  • 兩個VMS運行php artisan config:clear只是爲了確保你沒有緩存無效的數據庫連接
+0

讓我來試試這個'修剪($ AP)' – ihue

+0

不,沒有工作。同樣的結果。 – ihue

+0

我試過'dd(Gateway :: all());'。在IPv4中,我得到了所有的記錄。在IPv6中,我得到了這個空集合'Collection {#542 \ #items:[] }' – ihue