Laravel5.4: postsのCRUD機能を実装する

  • 0
    いいね
  • 0
    コメント

    postsテーブルに関するCRUD機能を実装します。
    usersテーブルと重複する説明は省略または簡略化します。
    :link: (過去記事) usersのCRUD機能を実装する

    親記事

    Laravel 5.4で基本的なCRUDを作る - Qiita

    postsのモデル、コントローラを作る

    :computer: PowerShell

    # モデル生成
    > php artisan make:model Post
    
    # コントローラ生成
    > php artisan make:controller PostController --resource
    

    :page_facing_up: routes/web.php

    // ルート追加
    Route::resource('posts', 'PostController');
    

    :page_facing_up: app/Http/Controllers/PostController.php

     use Illuminate\Http\Request;
    +// Postモデルをインポートする
    +use App\Post;
    
     class PostController extends Controller
     {
    

    一覧表示 (index)

    投稿日の新しい順で記事を取得します。orderByメソッドよりもlatestメソッドが便利です。

    :page_facing_up: app/Http/Controllers/PostController.php

    public function index()
    {
        // これでは新しい順にならない
        // $posts = Post::all();
    
        // 記述が長くなる
        // $posts = Post::orderBy('created_at', 'desc');
    
        // latestメソッドがおすすめ
        $posts = Post::latest();
    
        return view('posts.index', ['posts' => $posts]);
    }
    

    orderBy, latestはクエリビルダのメソッドですが、下記の通りEloquentモデルでも使えます。

    :link: Eloquent:利用の開始

    Eloquentモデルはクエリビルダですから、クエリビルダで使用できる全メソッドを確認しておくべきでしょう。Eloquentクエリでどんなメソッドも使用できます。

    :link: (公式解説) クエリビルダ
    :link: (APIリファレンス) クエリビルダのメソッドの一覧

    なお、allModelクラスのメソッドです。
    :link: (APIリファレンス) Model::all