iT邦幫忙

0

laravel cache到期後取得的圖片路徑不正確

請問各位使用laravel cache,當cache時間到期後,撈出資料內的圖片路徑(使用asset())產生的路徑為何會變成ip呢?正常狀況下asset()是回傳domain,請問有人有相關的解決經驗嗎?

$id = 1;
$data = (cache()->has('data')) ? cache()->get('data') : cache()->remember('data', 10, function() use ($id) {
    $result = Model::find($id);

    if ($result->img != '' && File:exists(public_path($result->img)) {
        $result->img = asset($result->img);
    } else {
        $result->img = asset('default.jpg');
    }

    return $result;
});

正常情況下asset()產出的圖片路徑是 https://domain.com/data.jpg
但在快取時間到期後的某段時間內,就算已經重新產生一筆新的快取資料
但asset()產出的圖片路徑卻變成 https://172.50.50.50/data.jpg

  • 暫時解決方案
    在RouteServiceProvider.php內的boot()加上這段程式碼,此狀況暫時沒發生
url()->forceRootUrl(config('app.url'));
看更多先前的討論...收起先前的討論...
r567tw iT邦新手 3 級 ‧ 2019-12-24 09:51:39 檢舉
我可以請教一下嗎?你的程式碼片段都沒有寫到asset() 耶,你的 new Model ,model 的getList() 裡面是怎麼運作的? 可能需要提供這些資訊才方便知道怎麼處理喔
拜請拜請,聖杯!!!

好了,聖母請出來了,請問你想問啥?
已補充說明
r567tw iT邦新手 3 級 ‧ 2019-12-24 20:06:08 檢舉
等等,你的model 應該要先save 吧? 這樣才會是寫入result model 裡面。然後你可以確認一下$result->img 是什麼形式嗎? 或許你可以試試看一步步的dd()然後看看到底是走哪個path 來找出問題
```
$result->save();
```
此問題範圍只在select跟insert或update無關

尚未有邦友回答

立即登入回答