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 App\Http\Controllers;
      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 Illuminate\Database\Eloquent\Model;

        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//密碼

    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']);

  查詢構造器(重點)用內置的方法對數據庫進行增刪改查

  

    簡介:
      提供方便,流暢的接口,用來建立以及執行數據庫操作
      使用PDO參數綁定,以保護應用程序免於SQL注入因此傳入的是數據不需要另外轉義特殊字符串
      基本可以滿足所有數據庫操作。

      要訪問這個數據的方法,需要增加一條路由,輸入訪問的 URL 調用這個路由訪問到控制器里面的方法。

  增加
    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;//加上這個條件,就只查詢一次,
    });//每次只查詢兩條,查完為止

 


免責聲明!

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



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