thinkphp5的模型中使用关联

有以下两个表

artitcle表(表示文章)



article的主键是id,外键是cateid,cateid对应于cate表的主键id。


cate表(表示栏目)



cate表的主键是id。


这两张表表示,每一篇文章属于一个栏目,每一个栏目有很多篇文章。


然后编写model类

article的model类:

[php]  view plain  copy
  1. class Article extends Model  
  2. {  
  3.     // 设置完整数据表(包含前缀名),不含前缀用$name  
  4.     // 这里用了LoginModel类名,而不是Login名,如果和控制器名一样,并且和数据库名一样即可不用指定数据库表名  
  5.     protected $name='article';  
  6.   
  7.     public function cate()  
  8.     {  
  9.         return $this->belongsTo("cate""cateid""id", ['article'=>'a''cate'=>'c'], 'LEFT');  
  10.     }  
  11. }  



cate的model类:

[php]  view plain  copy
  1. class Cate extends Model  
  2. {  
  3.     // 设置完整数据表(包含前缀名),不含前缀用$name  
  4.     // 这里用了LoginModel类名,而不是Login名,如果和控制器名一样,并且和数据库名一样即可不用指定数据库表名  
  5.     protected $name='cate';  
  6.   
  7.     public function article()  
  8.     {  
  9.         //hasMany('关联模型名','外键名','主键名',['模型别名定义']);  
  10.         //hasMany('关联模型名','cate的外键名','cate的主键名',['模型别名定义']);  
  11.         //cate的主键是id,article的外键是cateid,关联cate的id主键,article的外键是cateid  
  12.         return $this->hasMany("article""id""id");  
  13.     }  
  14. }  

article的控制器类对model进行调用

[php]  view plain  copy
  1. class Article extends BaseControler  
  2. {  
  3.   
  4.     public function lst()  
  5.     {  
  6.         $artres = ArticleModel::with("cate")->paginate(3);  
  7.         $this->assign('artres'$artres);  
  8.         return $this->fetch();  
  9.     }  
  10. }   


最后在article的模板中调用变量(注意:由于model返回来的是对象数组,不是数据的二维数组,所以在html中调用是->而不是. 。


[html]  view plain  copy
  1. <td>{$vo->id}</td>  
  2. <td>{$vo->title}</td>  
  3. <td>  
  4. {if condition="$vo->pic neq '' "}  
  5.         <img height="50px" src="__PUBLIC__/uploads/{$vo.pic}">  
  6. {else /}  
  7.     无缩略图  
  8. {/if}  
  9. </td>                           
  10. <td>{$vo->click}</td>  
  11. <td>{$vo->time|date="Y-m-d",###}</td>    
  12. <td>{$vo->cate->catename}</td>  


注意上面对cate表中catename的调用方式,如果写成{$vo.cate.catename}则会出错。

[html]  view plain  copy
  1.   

 

猜你喜欢

转载自blog.csdn.net/wangmj518/article/details/80202220