🕸️

降順をモデルで定義する

に公開
  • DBを操作する記述をコントローラーに記述しない
  • モデルで定義するか、サービスコンテナに書くか

Modelクラスで定義する

app/Models/モデル.php
class Tweet extends Model
{
    public static function 関数名() {
        return self::latest()->get();
    }
}

コントローラー内の処理でモデルクラスの関数を使う
※use宣言をする

IndexController.php
namespace App\Http\Controllers\Tweets;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Tweet;
use App\Services\TweetService;

class IndexController extends Controller
{
    public function __invoke(Request $request, TweetService $tweetService)
    {
        $tweets = $tweetService->関数名();
        return view('tweets.index')
            ->with('tweets', $tweets);
    }
}

staticを入れないと、ex.コントローラーで使う時、
$tweets = new Tweetのようにインスタンスを作る必要がある。
staticを入れたら、インスタンスを作らなくても大丈夫。


< クラスにはアクセス修飾子が3つある >

クラス中に定義してある変数はメンバ変数という。
アクセス修飾子がないときは、publicになる。
・public・・・どこからでもアクセス可能
・protected・・・そのクラス自身と、継承クラスからアクセス可能
・private・・・同じクラスの中のみでアクセス可能

Discussion