亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel imap 獲取按最近排序的消息

Laravel imap 獲取按最近排序的消息

PHP
喵喔喔 2022-06-11 18:50:49
我正在使用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',

    ]

]);


查看完整回答
反對 回復 2022-06-11
  • 1 回答
  • 0 關注
  • 140 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號