Laravel 學習--資料庫使用初識 1

Luson發表於2019-01-11

1.資料庫配置

  • (1)修改建議用env,動態使用config
    Oracle資料庫連線配https://blog.csdn.net/q393364227/article/details/78458690
  • (2) 自定義配置
    對於配置檔案內容介紹:
    driver'       => 資料庫型別',
    'host'        => 地址
    'port'        => 埠
    'database'    => 資料庫名
    'username'   => 使用者名稱
    'password'   => 密碼
    'prefix'      => 表字首

    2. 原生資料庫操作

  • 1 使用預設連結與指定連結
    資料庫預設連線操作:$ result = DB::select(‘select from table’);
    如果連線方式需要使用connection這個函式定義的連線,則
    $users = DB::connection('config')->select('select
    from t');
  • 2 原生的curd
    • select
      按順序的傳遞值方式
      $result = DB::connection('test')->select('select from table where id = ?',[3]);
      按鍵值傳遞值方式
      DB::select('select
      from users where id = :id', ['id' => 1]);
      注意: 預處理操作函式都具備2個引數位置(sql語句 、佔位符值)
      佔位符:
      1、? 按順序傳遞值
      2、:Name 按名稱傳遞值。傳參都是陣列形式
    • insert
      傳值方式與select一樣
      DB::connection('test')->select('insert into table ('count' , 'name') value(?,?),['3','8888888888']');
    • update 、delete同上
      DB::update('update users set votes = 100 where name = ?', ['John']);
      DB::delete('delete from users');
  • 3 事務(使用事務必須把表的資料引擎設定為innodb,在設計表->選項裡面設定)
    (1)自動
    主要是使用transaction這個方法
    DB::transaction(function (){
    //修改
    $num = DB::update("update goods set goods_name = 'Macos' where id = :id",['id'=>1]);
    //刪除
    $num1 = DB::delete('delete from goods where id = 7');
    var_dump($num,$num1);
    try{
    if ($num > 0 && $num1 > 0) {
    return '事務操作成功';
    }else {
    throw new \Exception('事務操作失敗');
    }
    }catch (Exception $e){
    return $e->getMessage();
    }
    });
    注意:務會自動提交。回滾觸發條件是丟擲異常
    (2)手動事務
    DB::beginTransaction();
    //修改
    $num = DB::update("update goods set goods_name = 'Macos' where id = :id",['id'=>1]);
    //刪除
    $num1 = DB::delete('delete from goods where id = 7');
    if ($num > 0 && $num1 > 0) {
    echo '事務操作成功';
    //事務提交
    DB::commit();
    }else {
    //事務回滾
    echo '事務操作失敗';
    DB::rollBack();
    }
  • 4 開啟sql監聽
    透過db中的listen方法。需要新增AppServiceProvider.php(位置app\Providers)中的boot方法
    public function boot()
    {
    //sql的監聽
    DB::listen(function ($query){
    //檢視sql語句
    // echo $query->sql;
    //檢視錯誤碼
    // var_dump($query->bindings);
    //執行時間
    echo $query->time;
    });
    }
    Laravel除錯錯誤外掛:https://blog.csdn.net/qq_38365479/article/...
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章