我正在使用laravel-imap從郵箱中檢索消息:$aMessage = $selectedFolder->query()->setFetchFlags(true)->setFetchBody(true)->setFetchAttachment(false)->leaveUnread()->limit(40, $highest_page)->get();默認情況下,最新消息位于最高頁面上。如果我只是獲取所有消息并按原樣顯示它們,我會首先看到舊消息(第 1 頁)。到目前為止我嘗試了什么:我調用后->get()的結果可以被視為一個普通的 laravel 集合,但是我用這些方法沒有成功:$aMessage = $aMessage->sortByDesc('date')->values()->all();$aMessage = $aMessage->sortByDesc(function ($item) { //\Log::info(print_r($item, true)); return $item->date;})->values()->all();我確信上面的方法不起作用,因為我使用->limit(40, $highest_page)了 ,這意味著集合的大小為 40。如果我不限制結果并使用切片我會遇到超時錯誤,因為郵箱中的消息太多:$aMessage = $selectedFolder->query()->setFetchFlags(true)->setFetchBody(true)->setFetchAttachment(false)->leaveUnread()->get()->reverse()->slice(0, $messages_per_page);我也嘗試了 laravel-imap 的方法paginate()。結果與limit().在這一點上,我確信我必須在結果變成集合之前以某種方式進行排序。我還發現:'options' => [ 'fetch_order' => 'desc',]選項被添加到客戶端。我試過asc和desc。我還清除了配置緩存,但沒有任何效果。我仍然在第 1 頁上看到最舊的結果,最后看到最新的結果。有人有更多想法嗎?
1 回答

富國滬深
TA貢獻1790條經驗 獲得超9個贊
在嘗試了幾種解決方案后,我決定進入供應商文件(config/imap.php)并在那里更改 fetch_order:
'fetch_order' => 'desc'
默認為 asc。似乎在創建客戶端時更改 fetch_order 不會覆蓋配置。我以前有這個,但它不起作用,也沒有拋出錯誤:
$this->oClient = new Client([
'host' => env('MAIL_HOST_IN'),
'port' => env('MAIL_PORT_IN'),
'encryption' => env('MAIL_ENCRYPTION_IN'),
'validate_cert' => true,
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'protocol' => 'imap',
'options' => [
'fetch_order' => 'desc',
]
]);
- 1 回答
- 0 關注
- 140 瀏覽
添加回答
舉報
0/150
提交
取消