Laravel入門筆記

  Laravel 是一款簡潔,優雅的一款框架,能夠說是入門TP後的第二款能夠選擇的框架。php

  目錄部分:mysql

  • app -> 本身寫的代碼
  • http -> Controller -> 控制器
  • bootstrap -> 框架自加載的文件
  • config -> 配置文件
  • database -> 關於數據庫
  • public -> 靜態文件
  • resources -> 視圖
  • storage -> 編譯靜態文件
  • tests -> 用於測試代碼

 

  默認訪問的文件是:public->index.phplaravel

  路由:正則表達式

    存放路徑:app/http/routes.phpsql

     TP 的訪問模式是 用戶訪問->控制器->Model->視圖數據庫

     Laravel 的訪問模式 用戶訪問->路由->控制器->Model->視圖bootstrap

    簡單的說,Laravel是經過路由來訪問各個控制器的服務器

    

  類型:(經常使用的類型中的其中2種)
    get: Route::get('basic1', function(){app

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

相關文章
相關標籤/搜索