微信小程序商城全栈开发 作业笔记 (十三)Banner表的完成(上)
(有一点点长呀,有点点强迫症,不想写的不清楚)
1.一对多关系
Banner可以包含多个Banner_item
1.定义关联
class Banner Model下
public function items(){
return $this->hasMang('BannerItem','banner_id','id');
关联模型 外键 主键(当前模型Banner)
}
2.查询包含的关联
with链式方法,填入函数名
POSTman查询一下
2.嵌套关联关系
原来没有img表
image嵌套,查询image
新建一个image模型,让Banner-item关联到image
两者一对一关系
3.一对一关系
使用 belongsTo() 函数
查询关联
返回Img表
(注意:从一边访问另一边,在前者定义关联)
代码封装一下:
这段代码放入getBannerByID中,取消以前注释的getBannerByID,getBannerByID改为self
测试一下,一样返回
4.隐藏模型字段
(列项)
直白法
首先,让我们获取banner的数据,由于data是受保护的数据,不能外部访问,所以通过
$data=$banner->toArray();取数据
->tojson();取对象
返回我们需要的结果
然后将$data取出,然后删除处理,返回给客户端,可以加如下代码刚刚的在下面
unset($data['delete_time']);
对于内嵌在里面的属性就比较麻烦了,建议简单情况使用
模型法
删除刚刚的代码,返回banner结果,加入下面的代码
只隐藏 $banner->hidden(['delete_time']);
只显示 $banner->visible(['delete_time']);
成功隐藏
然鹅,对于里面嵌套的属性不能隐藏
优化代码:在模型内部隐藏
直接在模型内部隐藏,可以在很多接口里返回banner
来到Model\Banner方法内部加入
测试一下,成功隐藏
需要隐藏的属性
测试一下,清晰不少
5.图片URL的配置
在隐藏的image属性里
from1为:本地资源;
from2为:Http的路径(作为相对路径方便更改)
首先,在配置文件里动态配置
自定义配置文件:
TP5默认的extra自定义配置文件,新建在application下
在extra新建一个setting.php的文件,将图片资源放置在public下,定义一个配置项,与图片的相对路径结合成完整的URL路径
再到控制器下读取配置文件
测试一下,成功返回我们要的路径
好了,分成小节,不然太长,影响体验