php模型分页代码,ThinkPHP6.0模型关联分页

模型关联分页简单案例,标签关联文章,对文章进行分页,上一篇文章写得比较繁琐,这里可以将问题拆解成一对多关系,那么问题就迎刃而解了。

我们可以通过查询tag直接拿到tag_id,通过中间表和文章表关联一对多实现关联分页,总体代码量会精简许多,而且能达到相同的效果,下面来看看吧!

文章模型

namespace app\admin\model;

class News extends Common

{

protected $autoWriteTimestamp = true;// 开启自动写入时间戳字段

/*

* 定义了修改器之后会在下列情况下触发:

* 模型对象赋值;

* 调用模型的data方法,并且第二个参数传入true;

* 调用模型的save方法,并且传入数据;

* 显式调用模型的setAttr方法;

* 定义设置文章的描述,若为空直接截取内容前面的文字

*/

public function setAbstractAttr($abstract, $news)

{

$abstract=str_replace(' ','',$abstract);

if (empty($abstract)){

return mb_substr(strip_tags(htmlspecialchars_decode($news['content'])), 0, 100, 'utf-8');

}else{

return $abstract;

}

}

//

public function tags()

{

return $this->belongsToMany('Tags', '\\app\\admin\\model\\NewsTags', 'tags_id','news_id');

}

public function newsCategory()

{

return $this->belongsTo('NewsCategory', 'news_category_id', 'id');

}

//关联中间表

public function newsTags()

{

return $this->belongsTo(NewsTags::class,'id', 'news_id');

}

}

中间表模型

namespace app\admin\model;

use think\model\Pivot;

class NewsTags extends Pivot

{

}

具体分页代码

public function index()

{

$data=$this->request->param();

$tag_name=$data['name'];

$tag=Tags::where('name',$tag_name)->find();

$news = News::hasWhere('newsTags',array('tags_id'=>$tag->id))->with('newsCategory')->paginate(1);

return view('index',compact('tag','news'));

}

5fbfc5de065c

分页

实现了和上个版本相同的效果,明显更优。希望对大家有所帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值