簡體   English   中英

如何在Laravel關系中實現SUM()?

[英]How can I implement SUM() in Laravel relations?

這是我的查詢,也可以正常工作:

SELECT sum(r.rating) as rank,b.* FROM books as b
LEFT JOIN ranks as r ON b.id = r.book_id
WHERE 1
GROUP BY (b.id)
ORDER BY rank DESC

現在我想在Laravel中做同樣的事情。 這是我嘗試過的:

// Book model
class Book extends Model
{
    public function ranks()
    {
        return $this->hasMany(Rank::class)->sum("rating");
    }
}

// Controller
$obj = new Book;
$get = $obj->ranks()->orderBy('rating', 'desc')->get();

它引發此錯誤:

在整數上調用成員函數groupBy()

知道如何解決此問題嗎?

public function ranks() {
    return $this->hasMany(Rank::class)
        ->select('book_id', \DB::raw('sum(`rating`) as `rank`'))
        ->groupBy('book_id');
}

$books = Book::with('ranks')->get();
$sortedBooks = $books->sortByDesc(function($book) {
    return $book->ranks->sum('rank');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM