LoginSignup
8
1

More than 3 years have passed since last update.

Laravel5.5 モデルで定義した関数をコントローラーで呼び出してみよう!

Last updated at Posted at 2021-01-04

みんなやってみよう〜!私にもてきたからみんなできる!
モデルで書いたメソッドをコントローラーで用いる書き方!
例えばログインしている人の投稿のみ欲しい時、コントローラだけで書くと以下のようになる。

BbsController.php

Bbs::where('user_id' => Auth::id())->get();

しかし、
ファイルが増えてくるとわざわざ毎回取得してくることが面倒になる。
下手をするとログイン者の投稿情報が必要の度にこのコードがかかれることとなる。
しかし!!
毎回このコードを書かなくてもいい方法があるんです!
それが、モデルにメソッドを書いてコントローラーで呼び出す方法である。

Database
>>Users table
+----+--------+    
| id | name | 
+----+--------+
| 1 | あけみ  |
| 2 | ゆうな  |
| 3 | たくや  |
+----+--------+

>>Bbses table
+----+----------------------------+
| id | bbs             | user_id |
+----+----------------------------+
| 1  | 今日のご飯        |    1    |
| 2  | 焼肉がいい       |    2    |
| 3  | 夜ご飯なににする    |    1    |
+----+----------------------------+

bbs.php

public function allGet($auth_id) {
        //ログインユーザーのカートデータ読み込み
        return $this->where('user_id', $auth_id)->get();
}
BbsController.php
use App\Bbs;
public function __construct(Bbs $bbs) {
        $this->bbs = $bbs;
}
public function index() {
        $bbses = $this->bbs->allGet(Auth::id());
        //$this->モデル->関数名
        dd($bbses);
}       
//下記のデータが取れてきてるはず!一度確認してみよう!!
Database
(例)ログイン者があけみさん
  id=1のあけみさんの投稿の取得したときのデータ
+----+----------------------------+
| id | bbs             | user_id |
+----+----------------------------+
| 1  | 今日のご飯        |    1    |
| 3  | 夜ご飯なににする    |    1    |
+----+----------------------------+

以上になります!
最初は丸写しでもいい!!
とりあえず、一度モデルで書いたメソッドをコントローラーで呼び出してみましょう〜!!
LGTM大好物なんで、ポチッと投げ銭感覚でおねがいします〜! :sunglasses:

BbsController.php(番外編)
use App\Bbs;
//コンストラクトない場合
public function index() {
        $bbses = (new Bbs)->allGet(Auth::id());
        //$this->モデル->関数名
        dd($bbses);
}   

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1