微信小程序商城全栈开发 作业笔记 (十三)Banner表的完成(上)

微信小程序商城全栈开发 作业笔记 (十三)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路径
在这里插入图片描述

再到控制器下读取配置文件
在这里插入图片描述
测试一下,成功返回我们要的路径
在这里插入图片描述
好了,分成小节,不然太长,影响体验

猜你喜欢

转载自blog.csdn.net/qq_43204040/article/details/86619607
今日推荐