原生sql怎么样使用Laravel的分页

select article_type_models.id as ad, article_type_models.name,article_models.* 
from `article_models`
inner join `article_type_models` on
article_type_models.id = article_models.type
where `article_models`.`status` = 1 and article_type_models.id = 1
limit 8
我有这么一段sql 我尝试换成下面这样了 
ArticleModel::where('status','1')
// ->join('article_type_models','article_models.type', '=','article_type_models.id')
// ->where('article_type_models.id',$request->typeID)
// ->paginate(8);
但是这样2个表中都有 ID字段 ID字段值发生了覆盖 我不知道怎么样 用模型的方法取一个别名来避免

能帮忙改一下吗

3 条回复

  1. phpitgo phpitgo says:

    ArticleModel::where('status','1')
        ->selectRaw('article_type_models.id as ad, article_type_models.name,article_models.*')
        ->join('article_type_models','article_models.type', '=','article_type_models.id')
        ->where('article_type_models.id',$request->typeID)
        ->paginate(8);


    这样应该是可以的

  2. 这里没有select字段,所以会出现id字段的覆盖,并且分页使用因人而异,我这里用的是skip take的这种方法,你可以参考下看看: ArticleModel::select(['article_type_models.id as ad', 'article_type_models.name as type_name', 'article_models.*']) ->where('status', '1') ->join('article_type_models', 'article_models.type', '=', 'article_type_models.id') ->where('article_type_models.id', $request->typeID) ->skip($offset) ->take($limit) ->toSql();

登录后才能进行评论,立即登录?