我需要计算两个不同的关系项,然后比较两者。我的问题是计数错了。
$server = Server::withCount('streams')->withCount('items')->has('streams', '!=', 'items')->orderBy('streams_count', 'desc')->first();
streams_count
正在返回0
,items_count
正在返回5
。但是,$server
正在返回null
,但它应该正确地从数据中获取服务器。
我还试图对having()
做一些事情,但它仍然抓住items_count
和streams_count
相等的服务器。
$server = Server::withCount('streams')->withCount('items')->having('items_count', '!=', 'streams_count')->orderBy('streams_count', 'desc')->first();
我没有正确地计算这些数量吗?
我希望做的基本上是抓住服务器,其中关联的流的总数和与服务器关联的项的总数不相等。
答案 0 :(得分:2)
试试这个:
->having('items_count', '!=', DB::raw('streams_count'))
答案 1 :(得分:0)
我会在这里从臀部射击......如果看起来不像......
$server = Server::withCount(['streams', 'items'])->where('streams_count', '!=', 'items_count')->orderBy('streams_count')->first();
虽然没试过......
答案 2 :(得分:0)
尝试以下方法:
Server::withCount('streams')->whereDoesntHave('items', function ($query) {
$query->where(DB::raw('count(*) as items_count'), '=', 'streams_count')
})->orderBy('streams_count', 'desc')->first();