【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

笔记

原创 2017年08月13日 03:39:06

7-8
一些Db操作数据库

       $result = Db::query('select * from banner where id=?',[1]);
       $result = Db::table('banner')->where('id','=',$id)->select();
       $result = Db::table('banner')->where(function($query) use ($id){
           $query->where('id','=',$id);
       })->select();

7-9节
模型继承Model后就可以直接使用get方法查询 而不需要自己写getBannerById(),可以在配置文件中配置输出格式 大概是34行

7-10节
每个模型名字最好对应数据库的表名 这样就可以相对应了 如果要把模型手动映射到某个表 可以使用:

protected $table = 表名

模型可以对应一个表 复杂的也可以对应多个表
tp5 可以使用Terminal 快速创建模型

>php think make:model api/BannerItem

要在根目录下指向命令,api代表的是模块。

7-11节
模型对应数据库的表
模型对象 对应数据库一条记录
静态方法(推荐)

  $banner = Banner::get($id)

实例化模型来调用

 $banner = (new Banner())->get($id)

7-12
查询

find select  get  all

前两者Db特有,后两者模型特有 如果使用get all 方法则不能使用Db查询。(Db是模型的基石)

模型 和数据库访问层(DB)的4个原则

模型主要处理业务DB就是用来操作数据库
不要因为模型的性能稍差而不使用模型
要用面向对象思维设计模型
模型的底层是数据库访问抽象层,可以自动调用数据库访问抽象层

8-1
A表和B表是1对多 那么在B中有很多重复的数据。
8-2
关联查询步骤(比如说是A表关联B)

 首先在A模型中增加items函数(函数名自己定义)(hasMany里面三个参数,分别是关联模型的模型名,关联模型与之相关联的字段名,当前模型的主键)

一对多

public function items()
{
return $this->hanMany('BModel','A_id','id')
}

一对一

public function items()
{
return $this->belongsTo('BModel','A_id','id')
}
$banner = AModel::with(items)->find($id)

8-3
A关联B B又嵌套关联C

在B模型中写

public function img()
{
return $this->hanMany('CModel','C_id','id')
}
$banner = AModel::with(['items','items.img'])->find($id)

A关联B 关联C

在A模型中写

public function img()
{
return $this->hanMany('CModel','C_id','id')
}

$banner = AModel::with(['items','img'])->find($id)

8-4
业务层在模型编写,然后在控制器调用模型中的方法。
好处是:模型中有许多内置的方法 下面列举几个。

把查出的json数据 隐藏其中的某些数据(下面演示隐藏id和name)

$banner = $banner->hidden(['id','name']);

只显示查出的某些数据

$banner = $banner->visible(['id','name'])

8-5
上述8-4中的隐藏显示方法仍然存在不足,比如说某个字段可能在很多接口都需要隐藏,那么你就需要在很多控制器去重复代码,其实我们完全可以避免这种情况,直接在模型中去 增加属性就可以。列如:
隐藏

protected $hidden = ['id','name'];

显示

protected $visible = ['id','name'];

8-6
在application目录下新建extra目录再在extra下建立配置文件,tp默认是可以自动加载的。列如:

新建 set.php文件
<?php
return [
    'pre_url' => 'your host'
];

怎么取出配置?

config('set.pre_url')

静态资源放在public目录下 才有权限访问。

8-7
读取器,可以在模型中读取某个字段的值,处理后返回,读取器的方法名是确定的get.字段名.Attr,里面传入的valuedata表示一行的值。
列如:当form字段=1时,在url字段前加上配置好的域名再返回。

public function getUrlAttr($value,$data)
{
$Url = $value;
if($data['form'] == 1)
{ $Url = config('set.pre_url').$value
}
return $url

8-8
思考一
上面8-7的问题 ,要是有很多表都有Url字段,那么如果我们是在每个有url字段的模型都定义这个读取器 代码就比较杂乱了
`改进:可以新增一个继承于model的basemodel,再让其他所有的业务model继承basemodel,把读取器放在basemodel中即可。
思考二:要是按照上面把读取器定义在了basemodel中 那么有些字段的url不需要这样处理 怎么办?

改进:可以把读取器嵌套在basemodel的一个方法里,然后再在需要处理的业务model层调用该方法,这样就只有在调用的时候才会识别读取器了

8-9
开闭原则:尽可能稍等 去修改之前的代码,因为新的代码测试成本高
支持多版本 路由上表示控制器的的V1别写死

改成:Rount::get(':v/url,:v/url');

8-10

`

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

laravel笔记-控制器

laravel笔记-控制器写在前面时间可贵,善用目录↑学习Laravel的笔记,仅仅是作为laravel文档笔记,目的是强化对文档的理解,质量不高。什么是控制器(Controller) 将相关的 ...

一种高效的笔记方法——思维导图

朋友,你是否经常参加工作会议或需要组织各种商业会议?你还是习惯于沿用自中学起就已熟悉的记录方法吗?一行一行,一句一句地做笔记?但是,你是否知道这种传统记录笔记的方法并不能有效地帮助我们学习和思维。 因为科学家们发现人的大脑对句子的处理并不是有序的。   英国的托尼 ? 巴赞就发明了一种创新性的笔记方法,叫做“思维导图”。这对传统的笔记方法提出了挑战。思维导图和传统的直线记录方法完全不同。它看上去就像一个人的神经网络图(见图一)。巴赞发明的这套方法极大地提高了理解能力和记忆能力,它对于逻辑思维和创

Learning to Track at 100 FPS with Deep Regression Networks 论文笔记

GOTURN算法论文翻译及理解云笔记 前言:本笔记仅限个人算法理解与记忆,不涉及技术/论文相关商业用途。 第一部分:个人 根据原论文的翻译及笔记 第二部分:个人根据论文及原算法的具体实现及应用迁...

个人推荐:有道云笔记

个人最推荐:有道云笔记,随时记录工作中的点点滴滴,避免忘记,让工作更轻松。 [b]优点:[/b] 1、在新笔记中输入内容,插入图片,有道云笔记还能帮您管理Word, Excel, PPT,PDF等多种附件; 2、无需手动保存,有道云笔记及时为您自动同步; 3、通过搜索轻松定位目标笔记。 有道云笔记能帮您: 分类整理笔记,高效管理个人知识。快速搜索,安全备份; 自动同步文件,支持图片及文档类附件。无限增长的大存储空间,轻松实现多地点办公; 用手机版随时随地记录一切趣事和想法,并自动与电脑双向同步; 一键保存网页中精彩图文,本地存储,永久珍藏有价值的信息。 微信文章及对话一

Spring Boot实战学习笔记4

title: Spring Boot实战学习笔记4 tags:Spring Boot实战 grammar_cjkRuby: true 摘要本文为学习Spring Boot实战的学习笔记,学...

似于印象笔记Evernote生活类iOS应用源码

  这是一款类似于印象笔记Evernote的生活类iOS应用——朝夕笔记 Oncenote。我希望能为更多的iOS开发者提供帮助与服务。当然App中还有不少bug和可扩展的功能模块,也希望各位开发者为该项目贡献自己的code力量。大家可以通过点击右上角的fork到自己的Github仓库,也可以点击star实时关注项目进度。   源码下载

【Stanford CNN课程笔记】5. 神经网络解读1 几种常见的激活函数

【Stanford CNN课程笔记】5. 神经网络解读1 几种常见的激活函数 本课程笔记是基于今年斯坦福大学Feifei Li, Andrej Karpathy & Justin Joh...

Java 动态代理学习笔记

转自: http://langyu.iteye.com/blog/410071 没事的时候翻看lang.reflect包下的代码,发现有两部分内容:涉及反射和动态代理。 很多地方都可以看到动态代理的影子,只是一直没仔细看下。 在学习之前,先提出几个问题,带着问题来看代码: 1.什么是动态代理? 2.为什么使用动态代理? 3.使用它

Deep Learning 学习笔记

一、文章来由好久没写原创博客了,一直处于学习新知识的阶段。来新加坡也有一个星期,搞定签证、入学等杂事之后,今天上午与导师确定了接下来的研究任务,我平时基本也是把博客当作联机版的云笔记~~如果有写的不对...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)