コレクション型とは?
Object型の一種で、Laravel独自の型でデータベースからデータを取得した際等はこの型になっています。配列をバージョンアップしたようなものになっています。コレクションで利用可能なメソッドは全部で100個以上あります。メソッドチェーンで記述が可能です。
コレクション型でよく使う関数
find
IDを指定して1件取得
1 |
$user = User::find(1); |
all
全て取得する。また、コレクションから元の配列に戻す場合でも同じ名前のメソッドを使いますが、紛らわしいので注意です。
1 |
$users = User::all(); |
chunk
人まとまりにして取得する。
get
情報を取得する。
plunk
指定したキーの値のみき取る。
1 |
$result->pluck('name'); // collect(['太郎','花子']) |
where
条件指定する。
1 |
$result->where('name','=','太郎'); |
toArray
配列に変える。
collect
通常の配列からコレクション型に変換する。
1 |
$data = collect(['a','b','c']); |
クエリビルダーとは?
SQLをPHPで記述する事ができます。
特徴
- PDOによるSQLインジェクション対策によるバインディングを行ってくれる。
「コレクション型」との使い分け
簡単にデータを取得したい場合は関数の数が豊富なコレクション型を使います。細かい条件指定がしたい場合はSQLのように記述ができるのでクエリビルダーを使います。
実装
テーブル名::all等のEloquentでデータを取得する場合に比べるとデータ量は少なくなりますが取得が可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; //use App\Models\Test; use Illuminate\Support\Facades\DB; ★追加 class TestController extends Controller { // public function index(){ // $values = Test::all(); $変数 = DB::table('テーブル名の複数形')->get(); ★追加 return view('tests.test',compact('$変数')); } } |
selectメソッド
特定のフィールドを取得します。
1 2 3 |
DB::table('テーブル名の複数形') ->select('フィールド名1','フィールド名2') ->get(); |
orderByメソッド
ソートをします。descは降順です。
1 2 3 4 |
$contacts = DB::table('テーブル名') ->select('フィールド名1','フィールド名2') ->orderBy('フィールド名1','desc') ->get(); |
rawメソッド
SQLをそのまま指定する事が可能です。ただ、SQLインジェクションの危険性が発生するのでユーザーからのデータ入力がない場所に限り使うようにしましょう。
ページネーションの実装
コントローラー側
一覧にクエリビルダーを使用して返している場合は下記のようにpaginateメソッドをお尻につける事で対応する事が可能です。
1 2 3 4 5 6 7 8 |
public function index() { $変数 = DB::table('テーブル名') ->select('id','name') ->paginate(件数); return view('ページ',compact('変数')); } |
ビュー側
ビュー側のDBから取得した結果を出力しているテーブルタグの下に下記のような記述を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 |
<table class="table"> <tbody> @foreach($変数s as $変数) <tr> <td>{{ $変数->id }}</td> <td>{{ $変数->name }}</td> </tr> @endforeach </tbody> </table> {{ $変数s->links() }} ★追加 |
この記事へのコメントはありません。