php---laravel5框架的使用

摘要:
phpnamespaceAppHttpControllers;//在app/http/controllers/下创建一个具有相同类名和文件名的新文件,然后扩展controllerpassMemberControllerextendsController{publicfunctioninfo($id){return“id-˃”.$id;}}创建视图。通常,一个控制器对应于一个视图文件夹:。blade Php是默认的模板视图文件。视图代码在控制器中返回:classMemberControllerextendsController{publicfunctioninfo(){////////member/info.blade.phpreturnview;}}从视图中的控制器获取参数:视图文件:使用{{$name}}双大括号添加参数name{{$name}}=={{$age}}}控制器文件:在返回的视图后面添加一个数组,以存储参数publicfunctioninfo(){//return/member/info.blade.phpreview;}模型视图创建:˂?

路由器的使用:

//在浏览器直接访问,跳转到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;
    }
}

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

php---laravel5框架的使用第1张

.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>

php---laravel5框架的使用第2张

创建一个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="http://t.zoukankan.com/{{url('urlTest')}}">url()</a>
    <a href="http://t.zoukankan.com/{{action('UserController@urlTest')}}">action()</a>;
    <a href="http://t.zoukankan.com/{{route('url')}}">route()</a>

    @stop

免责声明:文章转载自《php---laravel5框架的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WPF中使用WindowChrome自定义窗口中遇到的最大化问题接口测试简介下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

oracle 嵌套表 老猫

一、嵌套表的定义:     嵌套表是表中之表。一个嵌套表是某些行的集合,它在主表中表示为其中的一列。对主表中的每一条记录,嵌套表可以包含多个行。在某种意义上,它是在一个表中存储一对多关系的一种方法。考查一个包含部门信息的表,在任何时间内每个部门会有很多项目正在实施。在一个严格的关系模型中,将需要建立两个独立的表department和project.   ...

项目实战 从 0 到 1 学习之Flink (28)FlinkSql教程(二)

从kafka到mysql 新建Java项目 最简单的方式是按照官网的方法,命令行执行curl https://flink.apache.org/q/quickstart.sh | bash -s 1.10.0,不过这种方法有些包还得自行添加,大家可以复制我的pom.xml,我已经将常用的包都放进去了,并且排除了冲突的包。注意的是,本地测试的时候,...

LeetCode 36——有效的数独

1. 题目 2. 解答 将数独中数字的 ASCII 码值转化到 0-8 之间作为散列值,建立一个散列表,然后分别逐行、逐列、逐宫(3*3小块)统计每个数字的出现次数,若出现次数大于 1,则数独无效。 class Solution { public: bool isValidSudoku(vector<vector<char>&g...

vue+element实现表格v-if判断(转)

原文地址:vue+element实现表格v-if判断 <el-table-column prop="businessState" label="当前状态" width="250px" show-overflow-tooltip align="center"> <template scope="scope...

Oracle中特殊的INSERT语句

---------------------------------------insert into table-name select ...---------------------------------------insert into table-name values(coL-values, ... default)--------------...

Mybatis自动生成Xml文件,针对字段类型为text等会默认产生XXXXWithBlobs的方法问题

默认情况下产生的Mapper.xml里面存在: 需要修改generatorConfiguration.xml,里面的table加属性,如: <table domainObjectName="User" tableName="test_user"> <columnOverride column="address" javaTyp...