我在 laravel 8 中有這個查詢:
DB::table('contracts')
->leftJoin('documents', 'contracts.id', '=', 'documents.contract_id')
->whereNotNull('expiration_date')
->whereMonth('expiration_date', '01')
->whereYear('expiration_date', '2022')
->select('documents.contract_id', 'documents.is_contract', 'documents.expiration_date')
->get();
合同-檔案(一對多)
expire_date在 Documents 表中并且可以為空。
如果合同有 2 個填寫了 expire_date 的檔案,那么它將回傳兩個條目(對于同一個合同)。
我想從檔案中獲取 expiration_date 的最后一個條目(合同只有一個條目)
例如:如果一個合同有 2 個設定了 expire_date 的檔案……我只想獲取該合同的最后一個 expiration_date 值。
我怎樣才能做到這一點 ?
uj5u.com熱心網友回復:
嘗試
Contracts::with('documents', function($query) {
$query->latest('expired_at')->first;
})->get();
uj5u.com熱心網友回復:
請試試這個:latest 將獲得最新的 expire_date。
DB::table('contracts')
->leftJoin('documents', 'contracts.id', '=', 'documents.contract_id')
->select('documents.contract_id', 'documents.is_contract', 'documents.expiration_date')
->whereNotNull('expiration_date')
->latest('expiration_date')
->whereMonth('expiration_date', '01')
->whereYear('expiration_date', '2022')
->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/422699.html
標籤:
