zoukankan      html  css  js  c++  java
  • php---laravel5框架的使用

    路由器的使用:

    //在浏览器直接访问,跳转到welcome视图,视图路径在public/resources/views/
    Route::get('/', function () {
        return view('welcome');
    });
    
    //在浏览器直接访问,返回hello world
    Route::get("route1", function () {
        return "hello world";
    });
    
    //因为是post请求,不可以在浏览器地址栏直接访问
    Route::post("route2", function () {
        return "hello world";
    });
    
    //match: 可以定义接收get或post请求
    Route::match(['get','post'], "reute3", function () {
        return "hello world";
    });
    
    //any: 可以接收get和post请求
    Route::any("route4", function () {
        return "hello world";
    });
    
    //路由接收参数,php中的字符串拼接用 "."
    Route::get("user1/{id}", function($id){
        return "id-->" . $id;
    });
    
    //在user2/{id?} 后面加个问号代表参数不是必要的,可以在function中给个默认值
    Route::get("user2/{id?}", function($id = 5){
        return "id-->" . $id;
    });
    
    //参数校验,在最后面加上正折表达,这里代表username只能是字母
    Route::get("user3/{username}", function($username) {
        return "username-->" . $username;
    })->where("username","[A-Za-z]+");
    
    //路由别名,只要在后面加个数组,注意数组第一个元素是"as" => "center" ,第二个元素是function
    Route::get("user4/mamber-center", ["as" => "center" , function(){
        //使用routes可以返回对应的路径
        return route("center");
    }]);
    
    //路由群组,加前缀,member.可以通过member/user1访问到第一个,
    //通过member/user2访问到第二个
    Route::group(["prefix" => "member"], function(){
    
        Route::get("user1",function(){
            return "hello world";
        });
    
        Route::get("user2",["as" => "group_route", function(){
            return route("group_route");
        }]);
    
    });
    

    路由器绑定控制器的方法:

    //路由和控制器进行绑定,第一个是访问地址,第二个是控制器名称和方法名称,用@符号隔开
    Route::get("member", "MemberController@info");
    
    //路由和控制器进行绑定,第二种方法
    Route::get("member1", ["uses" => "MemberController@info"]);
    
    //起别名的方法
    Route::get("member2", ["uses" => "MemberController@info", "as" => "memter"]);
    
    //控制器接收参数的方法
    Route::get("member3/{id}","MemberController@info")->where("id", "[0-9]+");
    

    创建控制器:

    <?php
    
    namespace AppHttpControllers;
    
    //在app/http/controllers/下新建一个文件,类名和文件名相同,然后要extends controller
    class MemberController extends Controller{
        public function info($id){
            return "id->" . $id;
        }
    }

    创建视图,一般一个控制器对应一个视图文件夹:

    .blade.php是默认模板视图文件

    在控制器中返回视图代码:

    class MemberController extends Controller{
        public function info(){
            //返回/member/info.blade.php
            return view("/member/info");
        }
    }

    在视图里面获取控制器传过来的参数:

    视图文件:使用{{$name}} 双大括号加参数名

    {{$name}} === {{$age}}

    控制器文件:在返回视图后加一个数组,里面存放参数

    public function info(){
            //返回/member/info.blade.php
            return view("/member/info",
            ["name" => "php", "age" => 123]);
        }

    Model视图的创建:

    <?php
    
    namespace App;
    
    use IlluminateDatabaseEloquentModel;
    
    //创建一个视图类,extends Model
    class Member extends Model{
        //为了方法调用,写成静态方法
        public static function info(){
            return "this is model";
        }
    }

    控制器调用视图:

    public function info(){
            return Member::info();
    }

    连接数据库:

    config/database.php --》mysql的配置

    .env --》根目录下的配置文件,里面存放连接要用的数据

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_DATABASE=shopping
    DB_USERNAME=root
    DB_PASSWORD=
    

    根据要连接的数据库配置一下就可以了

    在Conrtoller中连接数据库写sql语句

    用DB::select,DB::update,DB::insert,DB::delete,

    public function getUserInfo($username){
            $user = DB::select("select id,username from user where username=?",
                [$username]); //中括号放参数,增删改查写法类似
            return dd($user);
        }

    查询构造器的使用(更快更方便):

    插入:

    //查询构造器的使用,在user表中插入数据,可以用二维数组插入多条数据
        public function query(){
            $rowCount = DB::table("user")->insert(
                [
                    ["username" => "larvel2", "password" => "admin"],
                    ["username" => "larvel3", "password" => "admin"]
                ]);
            if($rowCount > 0){
                return "success";
            }
            return fail;
        }

    修改:

      //查询构造器的使用,在user表中修改数据,注意要加上where条件
        public function query2(){
            $rowCount = DB::table("user")
                ->where("username","root")
                ->update(["password" => "456"]);
    
            var_dump($rowCount);
    
            if($rowCount > 0){
                return "success";
            }
            return "fail";
    
        }

    删除:

        //使用查询构造器删除数据
        public function query3(){
            $rowCount = DB::table("user")
                ->where("id", ">=" ,13)
                ->delete();
            var_dump($rowCount);
            if($rowCount > 0){
                return "success";
            }
            return "fail";
        }

     查询:

        //使用查询构造器查询数据
        public function query4(){
            //查询所有数据
            $userList = DB::table("user")->get();
    
            //查询第一条数据,可以指定排序方法->order("id","desc")
            $user1 = DB::table("user")->first();
    
            //查询指定条件的数据
            $user2 = DB::table("user")->where("id", ">=" ,14)->get();
    
            //查询指定条件的数据,多条件版
            $user3 = DB::table("user")->whereRaw("id >= ?", [12])->get();
    
            //查询指定的字段
            $usernameList = DB::table("user")->pluck("username");
    
            //查询之后用键值对的方式显示
            $usernameAndId = DB::table("user")->lists("username","id");
    
            //查询指定的字段
            $selectUser = DB::table("user")->select("username","password")->get();
    
            //一次查询n条,可以用return停止查询
            echo "<pre>";
            $selectN = DB::table("user")->chunk(2,function($user){
                var_dump($user);
            });
        }

    使用mysql的函数:

    //聚合函数的使用
        public function query5(){
            $count = DB::table("user")->count();
            var_dump($count);
    
            $max = DB::table("user")->max("id");
            var_dump($max);
        }

    ORM框架:

    查找:

        public function orm1(){
    
            echo "<pre>";
    
            //User定义的一个pojo,他有all(),find(),findOrFail()等方法
            $users = User::all();
    
            $user1 = User::findOrFail(15);//查找指定id,如果查不到就报错
    
            $user2 = User::where("id",">",1)->orderBy("id","desc")->first();
    
            $count = User::count();     //聚合函数的使用
    
            $max = User::max("id");
    
            dd($max);
    
        }

     插入:

    
        public function orm2(){
            $user = new User();         //新建一个用户
            $user->username = "orm";    //设置用户属性
            $user->password = "admin";
            //直接用save()方法保护到数据库,
            //orms框架会自动处理creaet_at和update_at
            //如果数据库表没有这两个字段,会报错
            $bool = $user->save();
    
            //用create方法直接保护到数据库
            $user1 = User::create(["username" => "imooc", "password" => "admin"]);
    
            //在数据库查找,如果找不到就插入一条新的
            $user2 = User::firstOrCreate(["username" => "cai", "password" => "admin"]);
    
            //在数据库查找,如果找不到就new一个对象,不会插入数据库
            $user3 = User::firstOrNew(["username" => "caijun", "password" => "admin"]);
            $user3->save();
            dd($user3);
        }
    

    修改:

    //orm,修改
        public function orm3(){
            //把id大于40的密码修改为123456
            $rowCount = User::where("id", ">", 40)->update(["password" => "123456"]);
            var_dump($rowCount);
        }

    删除:

        //orm,删除
        public function orm4(){
            //通过模型删除
            $user1 = User::find(41);
            $user1->delete();
    
            //通过主键删除
            User::destroy(42);
            User::destroy([43,44]);
    
            //指定条件删除
            User::where("id", ">", "15")->delete();
    
        }

    Blade模板的使用:

    在resources中创建一个模板文件:layous.blade.php

    <html>
        <title></title>
        <style type="text/css">
            div{
                margin: 5px;
                border-style: solid;
                border-color: black;
                float: left;
            }
            .header{
                 100%;
                height: 200px;
            }
            .sidebar{
                 200px;
                height: 500px;
            }
            .content{
                 600px;
                height: 500px;
            }
        </style>
        <body>
            <div class = "header">
                @section("header")
                    header
                    @show
            </div>
    
            <div class = "sidebar">
                @yield("sidebar")
                sidebar
                    @show
            </div>
    
            <div class = "content">
                @section("content")
                    content
                    @show
            </div>
        </body>
    </html>

    创建一个section.blade.php文件,引用模板

    @extends("layous")
    
    @section("header")
        @parent
        section 1 => header
        @stop
    
    @section("sidebar")
        @parent
        section 1 => sidebar
        @stop
    
    @section("content")
        @parent
        section 1 => content
        @stop

    模板文件的使用:

    @section("content")
        <!-- 1.输出变量 -->
        <p>{{$username}}</p>
    
        <!-- 2.调用函数 -->
        <p>{{ time() }}</p>
        <p>{{ date("Y-m-d H:i:m"),time() }}</p>
    
        <!-- 3.是否在数组中 -->
        <p>{{ in_array($username,$arr) ? "true" : "false"}}</p>
        <p>{{var_dump($arr)}}</p>
    
        <!-- 4.原样输出 -->
        <p>@{{$username}}</p>
    
        {{-- 址注释在浏览器中看不到 --}}
    
        <!-- 5.使用子视图 ,可以传参数到子视图中 -->
        <p>@include("user/childView",["message" => "success"])</p>
        @stop

    模板中流程控制:

    @section("sidebar")
        @if($username == "immoc")
            <p>i am immoc</p>
        @else
            <p>i am not immoc</p>
        @endif
    
        @for($i = 0; $i < 9; $i ++)
            <p>{{$i}}</p>
        @endfor
    
       @foreach($users as $user)
             <p>{{$user->username}}</p>
        @endforeach
    
        @forelse($users as $user)
            <p>{{$user->usrname}}</p>
        @empty
            <p>null</p>
        @endforelse
    
        @stop

    模板中的URL:url()和route()比较常用

    @section("header")
        @parent
        section 1 => header
        <a href="{{url('urlTest')}}">url()</a>
        <a href="{{action('UserController@urlTest')}}">action()</a>;
        <a href="{{route('url')}}">route()</a>
    
        @stop
  • 相关阅读:
    调用微信扫一扫接口
    Http错误代码解释
    php goto的用法
    Yii2.0-生成二维码实例
    飞鹅WiFi打印机配置,php调用接口
    HTML5 为什么只需要写 <!DOCTYPE HTML>?
    VueJs之 v-bind
    react 组件导出
    前端代码规范
    git与github的文件推送
  • 原文地址:https://www.cnblogs.com/lastingjava/p/11093403.html
Copyright © 2011-2022 走看看