谁能帮我解决查询可用书籍的问题吗?我不想让用户借阅已经借出或尚未归还的书籍以及根据份数缺货的书籍。
Book
模型和 books
带 number_of_copy
列的表格。BorrowRequest
模型和 borrow_requests
表格,其中包含借款人或用户的详细信息。BorrowRequestItem
模型和 borrow_request_items
表,其中 quantity
列是用户借用的副本数量,以及 returned_at
列(如果归还或未归还则触发)。现在我想查询用户正在借阅的书籍和库存书籍。
$user = 1; // sample user but it is dynamic
if (!$user) {
return;
}
$availableBooks = \App\Models\Book::where('number_of_copy', '>', 0)
->where('is_requestable', true)
->whereNull('deleted_at')
->whereNotIn('id', function ($query) use ($user) {
$query->select('book_id')
->from('borrow_request_items')
->join(
'borrow_requests',
'borrow_request_items.borrow_request_id',
'=',
'borrow_requests.id'
)
->whereColumn('borrow_request_items.book_id', 'books.id')
->where('borrow_requests.borrower_user_id', $user)
->whereIn('borrow_requests.status', ['Pending', 'Approved'])
->whereNull('borrow_request_items.returned_at')
->groupBy('book_id')
->havingRaw('SUM(borrow_request_items.quantity) >= books.number_of_copy');
})
->get()
->pluck('title', 'id')
->all();
return $availableBooks;
您遇到的错误是什么?代码看起来是正确的。