think php5关联模型,thinkphp5的模型中使用关联

有以下两个表

artitcle表(表示文章)

0818b9ca8b590ca3270a3433284dd417.png

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

cate表(表示栏目)

0818b9ca8b590ca3270a3433284dd417.png

cate表的主键是id。

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

然后编写model类

article的model类:

class Article extends Model

{

// 设置完整数据表(包含前缀名),不含前缀用$name

// 这里用了LoginModel类名,而不是Login名,如果和控制器名一样,并且和数据库名一样即可不用指定数据库表名

protected $name='article';

public function cate()

{

return $this->belongsTo("cate", "cateid", "id", ['article'=>'a', 'cate'=>'c'], 'LEFT');

}

}

cate的model类:

class Cate extends Model

{

// 设置完整数据表(包含前缀名),不含前缀用$name

// 这里用了LoginModel类名,而不是Login名,如果和控制器名一样,并且和数据库名一样即可不用指定数据库表名

protected $name='cate';

public function article()

{

//hasMany('关联模型名','外键名','主键名',['模型别名定义']);

//hasMany('关联模型名','cate的外键名','cate的主键名',['模型别名定义']);

//cate的主键是id,article的外键是cateid,关联cate的id主键,article的外键是cateid

return $this->hasMany("article", "id", "id");

}

}

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

class Article extends BaseControler

{

public function lst()

{

$artres = ArticleModel::with("cate")->paginate(3);

$this->assign('artres', $artres);

return $this->fetch();

}

}

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

{$vo->id}{$vo->title}

{if condition="$vo->pic neq '' "}

%7B%24vo.pic%7D

{else /}

无缩略图

{/if}

{$vo->click}{$vo->time|date="Y-m-d",###}{$vo->cate->catename}

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值