Eloquentの基礎
ORMとは
ORMはデータベースの レコードをオブジェクトとして扱えるようにする仕組みで、LaravelのORMがEloquentである。
全レコードの取得
peopleテーブルを操作するためのモデルクラスとしてPersonモデルを作成する。
PersonController
public function index(Request $request)
{
$items = Person::all();
return view('person.index', ['items' => $items]);
}
メソッドの追加
Personモデル
public function getData()
{
return $this->id . ':' . $this->name . '(' . $this->age . ')';
}
index.blade.php
@extends('layouts.helloapp')
@section('title','Person.index')
@section('menubar')
@parent
インデックスページ
@endsection
@section('content')
<table>
<tr>
<th>Data</th>
</tr>
@foreach($items as $item)
<tr>
<td>{{$item->getData()}}</td>
</tr>
@endforeach
</table>
@endsection
@section('footer')
copyright 20202 tuyano.
@endsection
index.blade.phpの{{$item->getData()}}では、$itemの中にある値をPersonモデルのgetData()に渡して処理している。
検索
レコードの操作でIDを使って検索するなら、findメソッドがよく用いられる。
$変数 = モデルクラス:: find(整数);とすることで検索できる。ただし、テーブルのプライマリーキーがidであることが前提となるのでid以外をプライマリーキーにしている場合は設定を変更する必要がある。
find.blade.php
@extends('layouts.helloapp')
@section('title','Person.find')
@section('menubar')
@parent
検索ページ
@endsection
@section('content')
<form action="/person/find" method="POST">
@csrf
<input type="text" name="input" value="{{$input}}">
<input type="submit" value="find">
</form>
@if (isset($item))
<table>
<tr><th>Data</th></tr>
<tr>
<td>{{$item->getData()}}</td>
</tr>
</table>
@endif
@endsection
@section('footer')
copyright 2017 tuyano.
@endsection
PersonController
public function find(Request $request)
{
return view('person.find', ['input' => '']);
}
public function search(Request $request)
{
$item = Person::find($request->input);
$param = ['input' => $request->input, 'item' => $item];
return view('person.find', $param);
}
<input type="text" name="input" value="{{$input}}">
ここで設定したinputの値をPersonControllerのserachで取得して検索する。
serachでinputとitemを取得すると、 <input type="text" name="input" value="{{$input}}">の$inputに値が入るのと、$itemにも値が入るのでif文の条件が満たされる。
あとはルーティングをすれば表示される。
この記事が気に入ったらサポートをしてみませんか?