php think bulid 报错,ThinkPHP5的技术总结

本文详细介绍了ThinkPHP框架的结构、命令行操作、路由设置、视图调用、数据库配置与模型操作,包括添加、查询、修改和删除等基本CRUD操作,以及高级特性如连贯操作、模板使用、Ajax应用和Request对象利用。
摘要由CSDN通过智能技术生成

1,框架目录介绍

Application:用于存放网站的文件夹php

Public:存放网站的静态资源文件夹和各公共文件mysql

Thinkphp:框架的核心代码文件ajax

Vendor:框架依赖的功能包存放文件夹sql

2,命令的方式建立控制器

根目录:Php think make:controller 分组/控制器名称thinkphp

3,命令方式建立分组

根目录:php think build数据库

4,注册路由

Route::rule(名称,路由,方式GET/POST)数组

Route::get(名称,路由)session

Route::post(名称,路由)app

Route::any(名称,路由,[‘method’=>’get|post’])框架

5,视图的调用

$this->fetch()

1,数据库的配置

(配置文件的地址:application/database.php)

2,命令的方式建立模型:

根目录:Php think make:model 分组/模型名称

3,数据的基本操做

1)添加:

添加一条记录:save

添加多条记录:saveAll

只添加数据库中含有的字段:allowFiled(true)

如:$goods->allowField(true)->save($data)

$goods->saveall($data)

2)查询:

A)查询一条记录:get()/find()

如:

Goods::get(133)

$goods->where(条件)

->find()

B)查询多条记录:all()/select()

如:

Goods::all([133,224])

$goods -> where('goods_id','in',[133,224])

->select()

C) 查询字段:value()/column()

如:

查询一个字段:

Goods::where('goods_id',133)

->value('goods_name')

查询知足条件的所有数据的指定字段:

Goods::where('goods_id','>',100)

->column('goods_name','goods_number')

3)修改:

update(至少知足下面条件中的一个)

①设置一个where()方法

②给修改的数据里边有设置主键id值

如:

$goods -> where('goods_name',’like’, ‘xiao%’)

-> update(['goods_name' => 'thinkphp']);

4)删除:

a) 物理删除:delete()/destroy(主键id)

b) 逻辑删除:softDelete:只是更新了delete_time的值

Trait:trait实际上是解决php面向对象不能多继承问题的,是一个弥补

4,连贯操做

1)where的四种使用方式:

① 数组

where(['name'=>'think','status'=>'1'])

where  name=think and status=1

② 表达式

where('id','>',1)

where('mail','like','%think@163.com')

where(['id'=>['>',1],'mail'=>['like','%think@163.com']])

where  id>1 and mail like ‘%think@163.com’

③ 字符串

where('type=1 AND status=1')

④ 绑定参数

where('id>:id AND name LIKE :name ',

['id'=>0, 'name'=>'thinkphp%'])

whereOr()或条件查询

where('字段名','表达式','查询条件');

whereOr('字段名','表达式','查询条件');

例子:

$goods = new Goods();

$info = $goods -> where(‘goods_id’,’>’,100)

-> whereOr(‘goods_id’,’

-> select();

2) field()限制被查询的字段

field('id,title,content')   普通字段

field(['id','title','content']) 数组方式

field('id,SUM(score)') 使用函数

例子:

Goods::field(‘goods_id,goods_name’)->select()

3) limit()限制条数

limit(3)

limit('3,10') //经过偏移量进行条数限制,第4到14条

limit(3,10)

Goods::field(‘goods_id’)->limit(3,5)->select()

4) order()排序

order('id desc')

order('id asc')

order('id desc,status')

Goods::order(‘id desc,status’)->select()

5) group()分组查询

Goods::field('goods_id,max(price)')

-> group('goods_brand')

-> select();

6) having()查询

Goods::field('goods_id,count(goods_id) cnt')

->group('goods_brand')

->having('cnt>200')

->select();

7) fetchSql(true/false) 直接获取sql语句不执行操做

true:获取sql语句

false:执行sql语句

curd(增、删、改、查)操做语句均可以获取对应的sql语句

Goods::field('mg_name,mg_pwd')->fetchSql(true)->select()

$m->fetchSql(true)->update(['mg_id'=>508,'mg_name'=>'think']);

Manager::fetchSql(true)->destroy(509);

$manager->fetchSql(true)->saveAll($data);

$manager->fetchSql(true)->save($data);

8) alias()给数据表起别名,有两种方式使用

① alias('m') 给当前数据表起别名

② alias(['sp_role  __ROLE__'=>'r','__MANAGER__'=>'m']);

表名要设置为大写的,而且先后有两个”_下划线”

__ROLE__会关联sp_role表,假定sp_是表前缀

__MANAGER__会关联sp_manager表

又好比__USER_TYPE__会关联sp_user_type表

Manager::alias('m')

->join('__ROLE__ r','m.role_id=r.role_id')

->field('m.mg_name,r.role_name')

->select();

Manager::alias(['__ROLE__'=>'r','__MANAGER__'=>'m'])

->join('__ROLE__','m.role_id=r.role_id')

->field('m.mg_name,r.role_name')

->select();

9) join() 连表查询

join(表名 别名,连表条件,类型)

类型:INNER,LEFT,RIGHT,FULL(mysql不支持)

select g.*,b.brand_name

from sp_goods as g

join sp_brand as b

on g.brand_id=b.brand_id

1,模板的使用

1)给模板传递数据:

1)方式

$this -> assign(变量在模版中的使用名称,被传递的数据);(和smartymuban的应用类似)

2)方式

return $this -> fetch(‘模版名称’,数组信息);

return $this -> fetch(‘模版名称’,[‘info’=>$info,’name’=>’jim’]);

若是模版名称为空,须要有“占位符”,具体以下

return $this -> fetch(‘’,[‘info’=>$info,’name’=>’jim’]);

3)方式

$info = xxx;

$name = yyy;

return $this -> fetch(‘’,compact(‘info’,’name’));

compact使用()

创建一个数组,包括变量名和它们的值

$city = “北京”;

$people = “2000万”;

$weather = “sunshine”;

$arr = compact(‘city’,’people’,’weather’);

print_r($arr);

//[‘city’=>’北京’,’people’=>’2000万’,’weather’=>’sunshine’]

2)数据的输出

1)普通变量:{$name}

2)数组:{$arr.name} {$arr[‘name’]}

3)对象:{$obj.name}  {$obj:name}  {$obj->name}

2,遍历数据

① {foreach $info as $val}

② {volist name="info" id="val"}

volist标签里边还能够支持的属性:

offset :偏移量,从第n条开始显示(条数基数从0开始),须要经过””双引号定义信息

length: 一共显示多少条

key:显示数据序号

empty:数据为空时的提示信息

mod:取模,当前记录的序号对mod取模后的信息,须要经过””双引号定义信息

3,收集数据

request()->param():收集全部类型的数据

request()->post():收集post方式提交的信息

Svae():添加数据

allowField(true):去除数据库不存在的数据

4,ajax无刷新方式

evt.preventDefault():阻止当前对象的默认动做

$(this).serialize():序列化当前表单的对象

parent.window.location.href=parent.window.location.href:刷新父界面

layer_close():关闭layer弹窗

5,制做超连接

{:url('分组/控制器/操做方法',[参数=>值,参数=>值])}

6,Request对象的使用

1,建立对象

request()

Request::instance()

function 方法(Request $request)

$this->request

2,收集数据

request()->get()

request()->post()

request()->param()

3,判断请求类型

request()->isAjax()

request()->isGet()

request()->isPost()

4,得到系统升级

request()->session

request()->action()

request()->controller()

request()->module()

1,依赖注入

class Goods extends Model

{

//在模型中声明invoke方法及对应内容

public static function invoke(Request $request)

{

$id = $request->param('goods_id');

return self::get($id);

}

}

控制器方法中,设置上述模型的对象,就会自动绑定上数据模型

public function upd(Goods $goods)

2,命名空间

命名空间的做用范围:

① 一个文件中只有一个namespace,这个空间的做用范围就是从namespace开始到文件的结束

② 一个文件中有多个namespace,每一个空间的做用范围是从本身的namespace开始下遇到下个namespace到来以前

③ 文件彼此包含include,被包含文件的命名空间 对 包含文件不形成任何 命名空间做用范围的影响

空间元素的三种访问方式

① 彻底限定名称

② 限定名称

③ 非限定名称

空间引入

use 空间\空间\空间\空间;

use  空间\空间\空间\类名;

use  空间\空间\空间\元素as别名;

访问公共空间的元素统一设置为:  \元素

建议:访问公共空间元素都要经过”\元素”的方式进行,好处代码可读性高

注意:

文件的第1个namespace关键字前边不能有任何非注释代码

ü 经过“非限定名称”方式访问一个函数或常量元素首先会在自己空间得到,若是没有再去公共空间获取

ü 经过“非限定名称”访问访问一个类元素  ,则自己空间必须存在该类,不然报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值