モデルの作り方&データベースの結果をAPIで返す

モデルの作り方については、まず以下を読んでほしい。

https://readouble.com/laravel/6.x/ja/eloquent.html#:~:text=%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E4%B8%80,%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82&text=%E3%83%A2%E3%83%87%E3%83%AB%E4%BD%9C%E6%88%90%E6%99%82%E3%81%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3,%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82

まずデータベースを作成&マイグレーションする。次に、テーブルやビュー1つにつき、モデルを一つずつ割り当てる。例えば以下のようにする。

$ php artisan make:model Models/VOrderView

すると、<LaravelRoot>/app/Models/配下にVOrderView.phpというモデルファイルができる。中身は以下の通りである。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class VOrderView extends Model
{

}

何もしなければ、モデル名をスネーク式した↑で、複数形の名前にしたテーブルあるいはビュー(この場合だと、v_orderviews)という名前のテーブルに自動的に紐づくが、以下のようにすると、手動でテーブルの紐付けを行うことができる。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class VOrderView extends Model
{
  //-- ↓以下の記述を入れると、手動でテーブルへの紐付けができる。
  protected $table = "V_ORDERVIEW";
}

モデルを作れば、データベースの中身をWebAPIの結果として返すことができるようになる。WebAPI用のコントローラーファイルを<LaravelRoot>/app/Http/Controllers/Api/UserControllersに配置しているとすると、コントローラーファイルに以下のように書く。

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\VOrderView;
//-- ↑モデルの場所を予め指定しておく。

class UserController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
      //-- モデルに紐付いているDBの全データを返す。
      $aho = VOrderView::all();
      return $aho;
    }
    //-- 以下省略
}

あとはhttps://<URL>/api/users/にアクセスすると、JSONで結果が得られているのがわかる。(ただし結果はUTF-8でエンコードされている)