zoukankan      html  css  js  c++  java
  • Laravel--入门笔记

    Laravel 是一款简洁,优雅的一款框架,可以说是入门TP后的第二款可以选择的框架。

      目录部分:

    • app -> 自己写的代码
    • http -> Controller -> 控制器
    • bootstrap -> 框架自加载的文件
    • config -> 配置文件
    • database -> 关于数据库
    • public -> 静态文件
    • resources -> 视图
    • storage -> 编译静态文件
    • tests -> 用于测试代码

      默认访问的文件是:public->index.php

      路由:

        存放路径:app/http/routes.php

         TP 的访问模式是 用户访问->控制器->Model->视图

         Laravel 的访问模式 用户访问->路由->控制器->Model->视图

        简单的说,Laravel是通过路由来访问各个控制器的

        

      类型:(常用的类型中的其中2种)
        get: Route::get('basic1', function(){

          return 'Hello World';

        });

        post: Route::post('basic2', function(){

          return 'Hello World2';

        });//不能用URL直接访问

      

      多请求路由
        match: Route::match(['get', 'post'], 'multy', function(){

          return 'Hello World3';

        });//既可以用get方式访问,也可以用post方式访问,即是指定方式请求。

        any: Route::any('matrh', function(){

          return 'Hello World4';

        });//响应所有http请求。

      

     路由参数
        get:Route::get('user/{id}', function($id){

          return 'User-id-'.$id;

        });

      默认值
        Route::get('user/{name?}', function($name = 'sean'){

          return 'User-name-'.$name;

        });


      用正则表达式判断
        Route::get('user/{name?}', function($name){

          return 'User-name-'.$name;

        })->where('name', '[A-Za-z]+');//where('要匹配正则的字段', '正则的规则,用[]包含')


      用正则判断多个字段
        Route::get('user/{id}/{name}', function($id, $name){

          return 'User-id-' . $id . ' User-name-' . $name;

        })->where(['id' => '[0-9]+', 'name' => '[A-Za-z]+']);

      路由别名
        Route::get('user/member-user', ['as' => 'member', function(){

          return 'member-user';

        }]);

      路由群组
        Route::group(['prefix' => 'member', function(){
          Route::get('user/{name}', function($name){
            return 'user-'.$name;
          });

          Rount::get('user/{id}', function($id){
            return 'id ='.$id;
          })
        }]);//访问的时候可以通过member前缀,访问路由群组里面的路由 例如:
      /* 原本是http://localhost/Laravel/laravel52/public/user/name
        加上前缀后变成http://localhost/Laravel/laravel52/public/menber/user/name
        同样可以访问
       */

      路由中输出视图
        Route::get('view', function(){
          return view('welcome');
        });

      总结:项目中的代码不能写在这里。路由只是用来接受请求,并转化给控制器中的方法进行处理。

      

      控制器
        路径:app/HttpControllers

        新建一个控制器
          1.和TP一样 MemberController.php
          2.namespace AppHttpControllers;
          3.写个类 
        eg:class MemberController extends Controller
          {
            public function info()
            {
              return 'member-info';
            }
          }

      路由和控制器关联
        Route::get('member/info', 'MemberController@info');//Route::get('控制器名/控制器方法名', '控制器名Controller @ 控制器方法');

      第二种方式:
        Route::get('member/info', ['uses' => 'MemberController@info']);

      控制器带参数
        Route::any('member/{id}', ['uses' => 'MemberController@info']);
      在控制器方法里面:
        public function info($id)
        {
          return $id;
        }

      当要限制参数类型
        Route::any('member/{id}', ['uses' => 'MemberController@info'])->where('id', '[0-9]+');

      视图
        路径:resources/views

        输出视图
          public function info()
          {
            return view('目录名/文件名');
          }

       前提是在视图层建好这个文件
        命名规则: 文件名.blade.php;

        一般一个控制器对应一个目录,如果控制器是MemberController.php 则建立一个member目录,控制器里要的视图存放在这个目录里面

        以上总结:和TP一样

        在控制器中带变量
          public function inin()
          {
            return view('menber', [
              'name'=>'陈77',
              'age'=>'老不死'
            ]);
          }
        模版中输出变量
          {{$name}} {{$age}}

      模型
          路径:app

          新建一个模型:
            namespace App;

            use IlluminateDatabaseEloquentModel;

            class Member extends Model
            {
              public static function getMember()
              {
                return 'sean';
              }
            }

        在控制器中使用
          1.在开头位置
              use App/模型名;

          2.因为上面的模型是用静态方法定义
              所以调用时候:模型名::模型里面的方法名();

        操作数据库

          三种方式
            DB facade(原生查找)
            查询构造器
              Eloquent ORM
            路径:
              config/database.php
              'prefix' => '表前缀'(没有可忽略)
              对应.env文件
            修改数据库配置
              vendor/.env
                DB_CONNECTION=mysql
                DB_HOST=127.0.0.1 //服务器地址
                DB_PORT=3306//端口号
                DB_DATABASE=homestead//数据库名
                DB_USERNAME=homestead//用户名
                DB_PASSWORD=secret//密码

      1.DB原生语句

         查询
          $res = DB::select('select * from goods'); dd($res);(相当于TP中的dump());
         增加
          $res = DB::insert('insert into goods(name, age) values(?, ?)',['sean', 18]);
         更改
          $res = DB::update('update goods set age = ? where name = ?', ['17', 'sean']);
         删除
          $res = DB::delete('delete from goods where id = ?', ['1001']);

      2.查询构造器重点)用内置的方法对数据库进行增删改查

      

        简介:
          提供方便,流畅的接口,用来建立以及执行数据库操作
          使用PDO参数绑定,以保护应用程序免于SQL注入因此传入的是数据不需要另外转义特殊字符串
          基本可以满足所有数据库操作。

          要访问这个数据的方法,需要增加一条路由,输入访问的 URL 调用这个路由访问到控制器里面的方法。

      3.增加
        DB::table('goods')->insert([
          ['name' => 'name1', 'age' => 18],
          ['name' => 'name2', 'age' => 12]
        ]);

        DB::table('goods')->insertGetId([
          ['name' => 'name1', 'age' => 18],
          ['name' => 'name2', 'age' => 12]
        ]);//获取到最后插入的ID

        修改
        DB::table('goods')->where('id', 2)->update(['age' => 13]);//把goods表的id=2的年龄改成age=13;
      自增
        DB::table('goods')->where('id', 2)->increment('age', 3);//把id=2的年龄自增3岁,不加数据默认自增一岁
      自减
        DB::table('goods')->where('id', 3)->decrement('age', 3)//把id=3的年龄自减3岁,不加数据默认自增一岁
      自增/自减时候更改其他数据
        DB::table('goods')->where('id', 2)->increment('age', 3, ['name', 'ii']);//自增的同时把name改成ii
      删除
        DB::table('goods')->where('id', '>=', 3)->delete();//删除id>=3的数据
        DB::table('goods')->truncate();//清空数据库,谨慎使用

      查询
        get方法: $res = DB::table('goods')->get();//获取表的所有数据
          dd($res);//Laravel的打印方式

        first顺序方法: $res = DB::table('goods')->first();//顺序获取表的一条数据

        first倒序方法: $res = DB::table('goods')->orderBy('id', 'desc')->first();//倒叙获取表的一条数据

        where方法: $res = DB::table('goods')->where('id', '<=', 1001)->get();//按条件获取表的数据

        where多个条件方法: $res = DB::table('goods')->where('id >= ? and age >= ?', ['1001', '18'])->get();//按多个条件获取表的数据

        pluck返回某个字段:$name = DB::table('goods')->pluck('name');//只返回name这个字段的值

        lists返回某个字段:$name = DB::table('goods')->lists('name', 'id');//只返回name这个字段的值,同时可以指定某个下标

        select指定查询的字段:$name = DB::table('goods')->select('name', 'id')->get();//只查询name, id 字段的值

        chunk限定每次返回几条:$name = DB::table('goods')->chunk(2, function($goods){
          dd($goods);
          return false;//加上这个条件,就只查询一次,
        });//每次只查询两条,查完为止

  • 相关阅读:
    (一)Python入门-2编程基本概念:18字符串-驻留机制-内存分析-字符串同一判断-值相等判断
    (一)Python入门-2编程基本概念:07内置数据类型-基本算数运算符
    (一)Python入门-2编程基本概念:08整数-不同进制-其他类型转换成整数
    (一)Python入门-2编程基本概念:09浮点数-自动转换-强制转换-增强赋值运算符
    (一)Python入门-2编程基本概念:10时间表示-unix时间点-毫秒和微妙-time模块
    (一)Python入门-2编程基本概念:11布尔值-比较运算符-逻辑运算符及短路问题
    (一)Python入门-2编程基本概念:12同一运算符-整数缓存问题
    (一)Python入门-2编程基本概念:01程序的构成
    (一)Python入门-2编程基本概念:02对象的基本组成和内存示意图
    有关位运算的基础知识总结
  • 原文地址:https://www.cnblogs.com/wyl0514/p/10513792.html
Copyright © 2011-2022 走看看