2.laravelフレームワークにおけるデータベース基本操作について


1.データベースの構成:config/database.php
'mysql' => [
    'driver'    => 'mysql',
    'host'      => env('DB_HOST', 'localhost'),
    'database'  => env('DB_DATABASE', 'forge'),
    'username'  => env('DB_USERNAME', 'forge'),
    'password'  => env('DB_PASSWORD', ''),
    'charset'   => 'utf8',
    'collation' => 'utf8mb4_general_ci',
    'prefix'    => 'wx_',//   
    'strict'    => false,
    'engine'    => null,
],
   .env
APP_ENV=local
APP_DEBUG=true
APP_KEY=FPg9LRkHTj5j14ig7ETzQhG29r5sEWNR

DB_HOST=localhost
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

データベースの3つの操作方法:元の検索:DB facade
クエリーコンストラクタ
                                    Eloquent ORM
DB facade:最も原始的なsql文操作データテーブル
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class TestController extends Controller{
     public function testDB(){
//問い合わせ
     DB::select('select * from tablename');
//追加
     DB::insert('insert into tablename(name,age) values(?,?)',['name',18]);//使う?より安全にバインド
//修正
     DB::update('update student set age = ? where name = ?',[20,'name']);//返される値は、変更されたローの数です.
//削除
     DB::delete('delete from tablename where id>?',[1]);
     }
}
クエリーコンストラクタ
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class TestController extends Controller{
//データの挿入
     public function testinsert(){
           DB::table('tablename')->inster(
           ['name'=>'test','age'=>18]
//複数組のデータを挿入する際、データを配列形式で書く:[
                                                                              ['name'=>'name','age'=>12],
                                                                              ['name'=>'testname','age'=>13],
                                                                              ]
           );
     }
//データの更新
     public function testupdate{
//該当データの更新
              DB::table('tablename')->where('id',1)->update(['age'=>15]);//データの更新には条件が必要です.where()
//自増
              DB::table('tablename')->increment('age');//デフォルト自己増加1
              DB::table('tablename')->increment('age',3);//自増3
//自滅
              DB::table('tablename')->decrement('age',3);//自己減算3
//条件付きの場合
              DB::table('tablename')->where('id',3)->decrement('age',3);
//他のフィールドも同時に変更
              DB::table('tablename')->decrement('age',3,['name'=>'test'])
     }
//データの削除
     public function testdel(){
              DB::table('tablename')->delete();//テーブル全体の削除
              DB::table('tablename')->where('id',15)->delete();//id=15を削除
              DB::table('tablename')->where('id','>=',15)->delete();//id>=15を削除
//総表削除、一般的にtruncate()を使わない;
              DB::table('tablename')->truncate();//値は返されません.テーブル全体の情報が削除されました
     }
//クエリー・コンストラクタを使用してデータをクエリー!方法はget(),fitst(),where(),pluck(),lists(),select(),chunk(),5.4後lists廃棄
    public function testsel(){
             //get()
              DB::table('tablename')->get();//テーブルのすべてのデータの取得
             //first()
              DB::table('tablename')->first();//結果の最初の項目には、ソート条件例->where('id','>=',15)を付けることができます.     ->orderBy('id','desc');//idの逆記述ソートによれば,ascは順序である.
             //where()
              DB::table('tablename')->where('id','>=',12)->get();
//複数条件
              DB::table('tablename')->whereRaw('id >= ? and age >= ?',[12,15])->get();
//pluck()->結果セットを返すフィールド
              DB::table('tablename')->pluck('name');
//lists()->結果セットのフィールドを返し、表示フィールドの下付きを定義します.
              DB::table('tablename')->lists('name','id');//出力値はid=>name
//select()->固定フィールドの検索を指定
               DB::table('tablename')->select('id','name','age')->get();//テーブルのid,name,ageフィールドのデータを検索
//chunk()->セグメント取得、5.4でchunkはorderBy()を使用する必要があります.
              DB::table('tablename')->orderBy('id','desc')->chunk(1000,function($tables){
                       var_dump($tables);//1回に1000個のデータがクエリーされ、セグメント化されます.
if(条件){return false;}//スキップ出力
              });
    }  
//クエリー・コンストラクタでの集約関数
    public function testju(){
        $count = DB::table('tablename')->count();//統計テーブルのレコード数
        $max   = DB::table('tablename')->max('age');//出力テーブルのage最大値
        $min    = DB::table('tablename')->min('age');//最小値
        $avg    = DB::table('tablename')->avg('age');//へいきんち
        $sum   = DB::table('tablename')->sum('age');//和を求める
     
    }
}