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'));
}
分頁
實現了和上個版本相同的效果,明顯更優。希望對大家有所幫助!
總結
以上是生活随笔為你收集整理的php模型分页代码,ThinkPHP6.0模型关联分页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab 变长参数,变长参数函数的概
- 下一篇: php粉丝关注功能,Redis实现用户关