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文の条件が満たされる。
あとはルーティングをすれば表示される。



この記事が気に入ったらサポートをしてみませんか?