オタブロ > IT知識 > PHP > 【Laravel8】初心者向け|LaravelのAPIで簡単なCRUDを作成する

【Laravel8】初心者向け|LaravelのAPIで簡単なCRUDを作成する

IT知識

この記事では初心者向けにLaravel8で作成したAPIで簡単なCRUD機能を実装する方法を紹介していきます。

環境はdockerで作成したLAMP環境なのでURLは基本localhostでの紹介となります。

スポンサーリンク

CRUDとは

まずはCRUDってなに?という方も多いと思うのでCRUDについて説明します。

CRUD とはCreate=生成、Read=読み取り、Update=更新、Delete=削除をそれぞれの頭文字をとって表したものとなります。

Routeの設定

まずはRouteの設定をします「routes/api.php」に以下を追記してください。

Route::resource('employee', EmployeeController::class);

これでCRUDに必要なRouteの設定が簡単にできます。

# php artisan route:list
+--------+-----------+------------------------------+------------------+------------------------------------------------------------------------+---------------------------------------------+
| Domain | Method    | URI                          | Name             | Action                                                                 | Middleware                                  |
+--------+-----------+------------------------------+------------------+------------------------------------------------------------------------+---------------------------------------------+
|        | GET|HEAD  | /                            |                  | Closure                                                                | web                                         |
|        | GET|HEAD  | api/employee                 | employee.index   | App\Http\Controllers\Api\EmployeeController@index                      | api                                         |
|        | POST      | api/employee                 | employee.store   | App\Http\Controllers\Api\EmployeeController@store                      | api                                         |
|        | GET|HEAD  | api/employee/create          | employee.create  | App\Http\Controllers\Api\EmployeeController@create                     | api                                         |
|        | GET|HEAD  | api/employee/{employee}      | employee.show    | App\Http\Controllers\Api\EmployeeController@show                       | api                                         |
|        | PUT|PATCH | api/employee/{employee}      | employee.update  | App\Http\Controllers\Api\EmployeeController@update                     | api                                         |
|        | DELETE    | api/employee/{employee}      | employee.destroy | App\Http\Controllers\Api\EmployeeController@destroy                    | api                                         |
|        | GET|HEAD  | api/employee/{employee}/edit | employee.edit    | App\Http\Controllers\Api\EmployeeController@edit                       | api                                         |
|        | GET|HEAD  | api/test                     |                  | App\Http\Controllers\Api\EmployeeController@test                       | api                                         |

Create(生成)の実装

まずはCreateの機能を実装します。

Create機能を実装したいコントローラーに以下を記載します。

※こちらの記事ではEmployeeコントローラー、 Employeeモデルを使用するため「Employee::」の部分を読み替えてください。

    public function store(Request $request)
    {
        Employee::create([
            'name' => $request->name
        ]);
    }

記載できたらPostmanを使用して実装した処理の確認が可能です。

Postman

Read(読み取り)の実装

次にReadの機能を実装します。

Read機能を実装したいコントローラーに以下を記載します。

    public function index()
    {
        $employee = Employee::select('name')->get();
        $response = [];
        foreach ($employee as $key => $val){
            $response[$key] = [
                'name' => $val->name,
                ];
        }
        return response()->json($response);
    }

Postmanで「http://localhost/api/employee」をたたいてみると以下のようにCreateで登録したものが表示されます。

[
    {
        "name": "test"
    },
    {
        "name": "test2"
    }
]

Update(更新)の実装

次にUpdateの機能を実装します。

Update機能を実装したいコントローラーに以下を記載します。

    public function update(Request $request, $id)
    {
        Employee::where('id',$id)
            ->update(['name'=>$request->name]);
    }

記載ができたら更新処理を実行して読み取りで更新されたか確認してみましょう。

[
    {
        "name": "test_update"
    },
    {
        "name": "test2"
    }
]

Delete(削除)の実装

最後にDeleteの実装となります。

Delete機能を実装したいコントローラーに以下を記載します。

    public function destroy($id)
    {
        Employee::destroy($id);
    }

これでしてしたIDのレコードの削除が可能です。

記載ができたら削除処理を実行して読み取りで削除されたか確認してみましょう。

[
    {
        "name": "test2"
    }
]
タイトルとURLをコピーしました