PG WORKS

PHPやLinux(サーバー)などのノウハウや、便利なツールを紹介していきます。

【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();
}
?>