一、需求场景:
在一个博客以及新闻管理系统中,对于文章的管理功能是最基本的需要。因此,可能会涉及到文章表和栏目表,而在数据库中两张表是通过文章中的(Article)cateid和栏目表中的(Cate)id进行关联。
二、遇到的问题:
在tp5中,我们通过查询一篇文章,一般只会得到与之对应的栏目id,至于栏目名称却无法直接获取。因些在显示文章内容列表中,只能显示与之对应的栏目id,这是非常不友好的。
三、解决办法:
我们有两种解决方法:
1.数据表连接查询:
//第一种方法 数据表连接查询
代码如下:
public function lst(){
$result=db('article')->alias('a')->join('tp_cate c','c.id=a.cateid')->field('a.id,a.title,a.pic,a.author,a.state,c.catename')->paginate(2);
$this->assign('result',$result);
return $this->fetch();
}
前台显示结果为:
lst.html中取其值的代码:
{$vo.catename}2.模型的关联查询
文章表和栏目表存在一对多的关系,现在我们要查询的是文章对应的栏目名称,多个找一个的关系,采用blongsTo的方法。
(1)定义两个模型文件Article.php和Cate.php。
Cate.php中是只继承Model即可。
Article.php需要添加如下代码。
2.Controller下的Article.php代码如下 :
直接采用类的静态方法查询即可
lst.html中取其值的代码:
{$vo.cate.catename}//加上栏目类的名字小结:
这就是在Thinkphp5中,最基本的多对一关系的演示实例,还有一对一、多对多的关系,希望大家快速掌握。