1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

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

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

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);
}   

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?