【Laravel】PDO(mysql)を使ったSQL操作
Laravel版のPDOを紹介。
最初は使い方がわからず戸惑いましたが、今はページ送りやGET/POST関連の操作が気軽に実装できて重宝しています。
1件だけデータを取得
<?php $sample = $DB::table('テーブル名')->where('id',1)->first(); // IDを表示 echo $sample->id; ?>
あいまい検索(sampleという名前がつくものすべてを検索)
<?php $sample = $DB::table('テーブル名')->where('name','like','%sample%')->first(); // IDを表示 echo $sample->name; ?>
名前がNULLになっている番号を検索
<?php $sample = $DB::table('テーブル名')->whereNull('name')->first(); // IDを表示 echo $sample->id; ?>
名前がNOT NULLの番号を検索
<?php $sample = $DB::table('テーブル名')->whereNotNull('name')->first(); // IDを表示 echo $sample->id; ?>
複数のデータを取得
<?php $samples = $DB::table('テーブル名')->get(); if( isset($samples) && count($samples)>=1){ // あるだけIDを表示 foreach( $samples as $row ){ echo $sample->id; } } ?>
ページ送り付きで検索
<?php // Contoroller内で定義 // samplesview.bladeというファイルがあることを前提 $limit = 30; $samples = $DB::table('テーブル名')->paginate($limit); return view('samplesview',compact('samples')); // samplesview.blade内で定義 // ページ送りを表示 {{ $samples->render(); }} //検索したinputデータを引き継ぎしたい場合 {{ $samples->appends('id', @$inputs['id'])->render(); }} ?>
OFFSETとLIMITの指定
<?php $samples = $DB::table('テーブル名')->offset(0)->limit(5)->get(); if( isset($samples) && count($samples)>=1){ // あるだけIDを表示 foreach( $samples as $row ){ echo $sample->id; } } ?>
データ編集系(トランザクション込み)
<?php // データの追加 DB::beginTransaction(); try { $DB::table('テーブル名')->insert(array('id'=>1)); $id = DB::getPdo()->lastInsertId(); //新規追加したIDを取得 DB::commit(); } catch( \exception $e ) { DB::rollback(); } // データ更新 DB::beginTransaction(); try { $DB::table('テーブル名')->where('id',1)->update(array('name'=>'samplename')); DB::commit(); } catch( \exception $e ) { DB::rollback(); } // データ削除 DB::beginTransaction(); try { $DB::table('テーブル名')->where('id',1)->delete(); DB::commit(); } catch( \exception $e ) { DB::rollback(); } ?>