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 App\Http\Controllers;

//在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 Illuminate\Database\Eloquent\Model;

//創建一個視圖類,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{
            width: 100%;
            height: 200px;
        }
        .sidebar{
            width: 200px;
            height: 500px;
        }
        .content{
            width: 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

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM