withCount()不包含已删除的行?

时间:2017-06-14 17:39:13

标签: laravel laravel-5 laravel-5.3

如何使withCount('comments')还包括所有已删除/已删除的行?

例如,如果我有5条评论,并且我删除1条,我仍然希望withCount('comments')返回5,但它会返回4条。

我的完整查询如下所示:

$query = Post::withTrashed()
    ->withCount('comments')
    ->get();

4 个答案:

答案 0 :(得分:0)

您可以使用withTrashed方法:

>withTrashed()

答案 1 :(得分:0)

我想你可以试试这个

$query = Post::withCount('comments')
    ->withTrashed()
    ->get();

$query = DB::table('post')
         ->select('comments', DB::raw('count(*) as comments'))
         ->get();

希望这对你有用!

答案 2 :(得分:0)

由于laravel没有提出使用withCount时过滤关系的方法,因此一种干净的解决方案是声明该关系并将withTrashd()添加到其中。

Post.php

public function commentsWithTrashed()
{
    return $this->comment()->withTrashed();
}

现在您可以在其上使用withCount

$query = Post::withTrashed()
    ->withCount('commentsWithTrashed')
    ->get();

答案 3 :(得分:0)

您可以将其添加为计数

$query = Post::withCount(['comments'=> function ($query) {$query->onlyTrashed();])
         ->get();

它正常工作。