比较两个关系与计数

时间:2018-04-17 01:35:58

标签: php laravel laravel-5

我需要计算两个不同的关系项,然后比较两者。我的问题是计数错了。

$server = Server::withCount('streams')->withCount('items')->has('streams', '!=', 'items')->orderBy('streams_count', 'desc')->first();

streams_count正在返回0items_count正在返回5。但是,$server正在返回null,但它应该正确地从数据中获取服务器。

我还试图对having()做一些事情,但它仍然抓住items_countstreams_count相等的服务器。

$server = Server::withCount('streams')->withCount('items')->having('items_count', '!=', 'streams_count')->orderBy('streams_count', 'desc')->first();

我没有正确地计算这些数量吗?

我希望做的基本上是抓住服务器,其中关联的流的总数和与服务器关联的项的总数不相等。

3 个答案:

答案 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();