laravel笔记

2018-01-02  本文已影响0人  任人渐疏_Must

composer

composer基本使用

  1. 在指定文件夹下创建composer.json,填写相关的配置(注意:文件中所有的引号都是双引号,json字符串的格式不能有误)
{
  "require":{
        "endroid/qrcode":"1.7.3"
}
}
  1. 在命令行下执行composer install(执行命令的时候,一定要将命令行的目录 切换到创建composer.json文件下)
  2. 创建php脚本,并且要引入vendor文件夹下的autoload.php
  3. 查看文档,使用工具包

更新composer.json文件

  1. 修改文件
{
    "require:"{
        "endroid/qrcode":"1.7.3",
        "gregwar/captcha":"v1.1.1"

    }

}

2.更新
composer update

软件更新

composer self-update

laravel

运行环境

  1. php版本>=5.5.9
  2. Mcrypt PHP扩展 (php的加密扩展,提供多种加密算法)
  3. openssl扩展 (对传输的数据进行加密)
  4. mbstring扩展(提供了针对多字节字符串字节编码)
  5. Tokenlzer PHP扩展(php代码解析)

安装

1.composer安装
composer create-project laravel/laravel your-project-name --prefer-dist "5.*.*"

  1. 直接复制一份安装

路由

  1. Route::get('/',function(){ return 'hello world!' });
  2. Route::post('/insert',function(){});
  3. Route::put(......);
  4. Route::delete('.....');
//限制参数的类型
Route::get('/goods/{id}',function($id){
  echo ‘商品详情页当前id为’.$id;
})->where('id','\d+');

//多个参数
Route::get('/{type}-{id}',function($type,$id){
  echo '当年的类型为'.$type.',当前的id为'.$id;
});

//别名
Route::get('/Admin/User/index',[
'as'=>'ulist',
'uses'=>function(){
  echo "这里是后台用户显示";
  echo route('ulist'); //route函数是通过路由来快速创建完整url的
}  
]);

//路由组
Route::group([],function(){

});

  1. abort(404,'没有找到相关页面!');
  2. 设置模板——>resources/views/errors/404.blade.php

中间件

  1. 创建(默认不直接生效)
    php artisan make:middleware LoginMiddleware
    生成的中间件都在 app/Http/Middleware

  2. 编写代码

  3. 注册
    ——全局注册
    在Kernel.php——>$middleware成员属性中添加
    ——路由注册
    在Kernel.php——>$routeMiddleware成员属性中添加

  4. 使用

Route::get('/middle',['middleware'=>'test',function(){
 return 'hello world!';
}]);

Route::get('/aa',function(){
 return "aa";
})->middleware('test');

控制器

app/Http/Controllers

  1. 创建控制器
    php artisan make:controller UserController
    php artisan make:controller UserController --plain(无多余方法的)
  2. 路由以及访问
//当前用户请求服务器上的/controller路径时,会执行UserController控制器文件中的show方法
Route::get('/controller','UserController@show');

//使用别名
Route::get('admin/user/delete/{id}',[
  'as'=>'udelete',
  'uses'=>'UserController@delete'
]);

Route::get('admin/user/index',[
  'middleware'=>'login',
  'uses'=> 'UserController@index'
]);
  1. 隐式控制器
//如果是goods开头的路径,都交给GoodsController处理
Route::controller('goods','GoodsController')

//在GoodsController中添加add方法,前面加请求方式(get/post)
//GET  /goods/add  HTTP/1.1
public function getAdd(){
}

//插入的请求方式为post
//POST /goods/insert HTTP/1.1
public function postInsert(){}


4.restful控制器

Route::resource('photos', 'PhotoController');

方法 路径 动作 路由名称
GET /photos index photos.index
GET /photos/create create photos.create
POST /photos store photos.store
GET /photos/{photo} show photos.show
GET /photos/{photo}/edit edit photos.edit
PUT/PATCH /photos/{photo} update photos.update
DELETE /photos/{photo} destroy photos.destroy

请求

1.基本信息获取

$request->method(); #获取请求方法
$request->IsMethod('post');#检验方法
$request->path();#请求路径
$request->url();#获取完整url
$request->ip();#获取ip
$request->getPort();#获取端口
  1. 提取请求参数
$name = $request->input('name'); #基本获取 
$request->input('name','Sally'); #设置默认值
$request->has('name'); #检测是否存在
$input = $request->all(); #提取所有参数

$request->only(['username','password']); #提取部分
$request->except(['credit_card']); #提取部分

$request->header('Connection');#获取头信息

  1. 文件操作
  $request->hasFile('photo'); #检测是否有文件上传
  $request->file('photo')->move('./uploads/','001.jpg');#将文件移动到指定位置
  1. cookie操作
  \Cookie::queue('name','Jack',10); #设置
  return response(' ')->withCookie('uid',10,10); #设置

\Cookie::get('name'); #读取
$request->cookie('name'); #读取

  1. 闪存信息
$request->flash();#将所有参数写入闪存
$request->flashOnly('title','price');#将部分参数写入闪存
$request->flashExcept('_token');#除去某些参数之外的参数
\Session::flash('name','jack'); #自定义闪存

响应

return '哈哈哈'; #返回字符串
return response('')->withCookie('id',20,60); #设置cookie
return response()->json(['a'=>100,'b'=>2000]);#返回json
return response()->download('web.config');#下载文件
return redirect('/goods/add');#页面跳转
return response()->view('goods.add');#显示模板
return response('')->head('name','helloworld'); #响应头

视图

  view('user.add') #解析模板
  view('user.edit',['username'=>'admin']);#分配数据到模板

模板引擎blade

resources/views  #模板的默认存放位置
{{$username}} #使用变量
{{time()}}#使用函数
{{$username or 'guest'}} #设置默认值
{{!! $name !!}} #显示html代码
@include('header')#引入子视图

模板继承

      #占位符
            @yield('title')
            @section('content')
            @show

        #新模板内容
              @extends('index')
              @section('title','new Title')

              @section('content')
                        new contents is here
              @endsection

流程控制

@if(count($records)===1)
      I have one record!
@elseif(count($records) >1)
      I have multiple records!
@else
      I don't have any records!
@endif

循环控制

  @for($i = 0;$i<10;$i++){}
  @endfor

  @foreach($users as $user)
  @endforeach

数据库

支持的数据库类型 Mysql ,Postgres, SQLite, SQL Server

数据库连接配置

* 文件位置:`config/database.php`
* 结果集的返回类型 :`'fetch'=>PDO::FETCH_ASSOC`
* .env环境快速配置

数据库的基本操作

  ```
    DB::select  #查询
    DB::insert   #插入
    DB::update #更新
    DB::delete  #删除
    
     DB::statement('drop table users');#一般语句
     
      #事务操作
      DB::beginTransaction
      DB::rollBack()
      DB::commit()


      DB::connection('foo')->select(....);#操作多个数据库
  ```    
### 构造器

  #### 插入
#单条
  DB::table('users')->insert(
      ['email'=>'xxx@qq.com','votest'=>0]
    );
  #多条
  DB::table('users')->insert([
       ['email'=>'xxx@qq.com','votest'=>0],
       ['email'=>'zzz@qq.com','votest'=>0]
 ] );  
  #获取id插入
  $id = DB::table('users')->insertGetId(
          ['email'=>'xxx@qq.com','votes'=>0]
    );


更新

DB::table('users')->where('id',1)->update(['votes'=>1]);

删除

DB::table('users')->where('votes','<',100)->delete();

查询

DB::table('users')->get() #查询所有
DB::table('users')->first() #查询单条
DB::table('users')->value('username')#查询单条结果中的某个字段
DB::table('users')->lists('username') #获取一列数据

连贯操作

  DB::table()->select()->get() #设置字段
  orderBy('name','desc') #排序
  DB::table(users')->skip(10)->take(5)->get(); #分页

#连接表
  DB::table('users')
        ->join('contacts','users.id','=','contacts.user_id')
        ->join('orders','users.id','=','orders.user_id')
        ->select('users.*','contacts.phone','orders.price')
        ->get();

条件

  DB::table('users')->where('votes','>',100)->orWhere('name','John')->get();
  DB::table('users')->whereBetween('votes',[1,100])->get();
  DB::table('users')->whereIn('id',[1,2,3])->get() ;

计算

  DB::table('users')->count() #总数
  DB::table('orders')->max('price')#最大值
  DB::table('order')->avg('price')#平均值

sql语句记录

Event::listen('illuminate.query',function($query){var_dump($query);});
放入路由文件中

数据库迁移

up 方法

Schema::create('users',function(Blueprint $table){
  $table->increments('id')->comment('主键字段');
  $table->string('username')->nullable()->default('abc')->comment('用户名');
  $table->char('password',100)->comment('密码');
});
    ```        
      2. 字段修饰
       ` nullable  default   unsigned  comment  `

      3. 索引
          ```
              $table->primary('id');#主键
              $table->index('password');#一般索引
              $table->unique('username');#唯一索引
          ```
       4. 设置引擎
      `$table->engine = 'myisam;'`          

down方法

Schema::drop('users');#删除表

命令

php artisan migrate
php artisan migrate:refresh

记录表结构的变化

$table->dropPrimary
$table->dropUnique
$table->dropIndex

数据库数据填充

套路一

  1. 创建注入文件(文件默认在database/seed中)php artisan make:seeder user
  2. 在文件中填写注入代码
  3. 运行指令 php artisan db:seed --class=user

套路二

  1. 创建注入文件
  2. 在文件中书写注入代码
  3. 在DatabaseSeeder 文件中添加代码
  4. 运行指令 php artisan db:seed

设置自定义函数和自定义类文件

//app/library/helper.php
#在项目下的composer.json中添加信息
"autoload":{
  "classmap":[
    "database"
],
"files":[
  "app/Library/helper.php"
]
},

composer dump-auto

调试工具

debugbar安装

composer require barryvdh/laravel-debugbar

#在config/app.php里面的providers添加

Barryvdh\Debugbar\ServiceProvider::class

chrome插件postman

模型操作

创建模型

php artisan make:model Order
php artisan make:model Order -m #会自动添加迁移文件

模型限定

属性设置

laravel 使用前端框架Bootstrap

yarn install --no-bin-links
yarn add cross-env
上一篇下一篇

猜你喜欢

热点阅读