Laravel 5 对laravel中的数组错误调用成员函数paginate()

Laravel 5 对laravel中的数组错误调用成员函数paginate(),laravel-5,laravel-query-builder,Laravel 5,Laravel Query Builder,我想在laravel中创建分页,但它会产生错误。 下面是错误“调用数组上的成员函数paginate()” 这是我的问题 $blog = DB::select("select blog_post.*,(select img_name from blog_image WHERE blog_image.bid=blog_post.bid limit 0,1) as img_name, (SELECT count(*) FROM likes WHERE likes.bid =blog_post.bid

我想在laravel中创建分页,但它会产生错误。 下面是错误“调用数组上的成员函数paginate()”

这是我的问题

$blog = DB::select("select blog_post.*,(select img_name from blog_image WHERE blog_image.bid=blog_post.bid limit 0,1) as img_name, 
(SELECT count(*) FROM likes WHERE likes.bid =blog_post.bid) AS likes,
(SELECT count(*) FROM comment WHERE comment.bid =blog_post.bid ) as comments ,
(SELECT count(*) FROM blog_share WHERE blog_share.bid =blog_post.bid ) as  share 
from blog_post WHERE status=1 AND is_draft=0 AND is_publish=1 AND is_delete=0")->paginate(2);

首先需要使用重写查询。例如:

$blog = DB::table('blog_post')->where([ 'status' => 1, 'is_draft' => 0, 'is_publish' => 1, 'is_delete' = 0 ])->paginate(2);
您不需要严格地将所有计数/内部查询放在一个查询中。你可以使用雄辩的关系和变异为你获取信息。例如,使用以下关系获取图像:

class BlogPost extends Model
{

  public function image()
  {
    return $this->hasOne('BlogImage');
  }

}

用雄辩的语言写下你的疑问。否则不能使用
paginate
。谢谢,但当我在上面编写查询时,我只需要在一个查询中得到所有结果。这在拉维尔是可能的。若是,那个么怎么做呢?是的,这在Laravel中是可能的,使用雄辩的函数和
DB::raw()
的组合。你们能给我举个例子吗