PHP

スポンサー広告

Laravel5.4 MySQLと接続その3

2017/08/06

Laravel5.4 MySQLと接続その2の続きです。

おさらい(手順)

  1. php artisan make:model テーブル名(頭大文字単数形) -m でマイグレーションファイルとModelのPHPファイルを作成
  2. マイグレーションファイルを編集してテーブルのカラムを定義
  3. php artisan migrateでテーブル作成
  4. インストールフォルダ/Appの下のモデルファイルに protected $fillable =['カラム名','カラム名','カラム名'];を追記(編集していいカラム名)
  5. 手動でテーブルデーターを入力
  6. viewを作る。下の12の変数名を埋め込む
  7. web.phpでModelフィルをuseして変数=モデル内クラス::all();
  8. return view('article',compact('変数名'));

とわかったようなわからない手順でした。

controlerからモデルにアクセスしてデータをviewに渡す

今回は上記7の手順をコントローラーにしてもらいます。

artisanを使います。

php artisan make:controller コントローラー名

コントローラー名はFooControllerのようなパスカル記法(単語の頭が大文字)がお作法のようです。

MySQLのArticleテーブルに対するコントローラーを作成しようと思います。インストールフォルダに移動して

php artisan make:controller ArticleController

コントローラーの作成

これでインストールフォルダ/app/Http/Controllerの中にArticleController.phpが作成されました。

ArticleController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ArticleController extends Controller
{
    //
}

クラスの内容が空のファイルが作成されました。このクラス内に処理を書きます。

クライアントからサイトにアクセスがあるとweb.phpでviewを指定するのですがその時にcontroller(のメソッド)の指示でDBからデータを取得したり、登録したり、処理の結果をviewに渡すようにします。ですから今回はmodelからデータを引っ張ってきてすべてのデータを渡します。

modelは手順4(Laravel5.4 MySQLと接続その2)でできていますすべてのデータはmodelを呼んでテーブル名::all();で取得できます。今回はArticleController.phpにindexクラスを作りその中で$article = Article::all();をしてviewに返してあげます。

ArticleController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Article;        // モデルを呼ぶのに必要

class ArticleController extends Controller
{
     public function index(){
	    $article = Article::all();
	    return view('article', compact('article'));
	 }
}

これでコントローラーからモデルを呼んですべてのデータを取得して$articleでそのデータを渡してあげられます。$articleは配列になるので複数形の$articlesの方がよかったですが、前回単数形でviewも作ってしまったので気にせず行きます。

あとはweb.phpでコントローラを呼ぶようにしてあげれば完成です。

前回のRouteが残っている場合は消します。

web.php

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});
Route::get('/article','ArticleController@index');  // articleにアクセスがあったらArticleControllerのindexメソッドを実行せよ

それで、上記のコントローラーのメソッドが呼ばれてモデルからデータを取得。articleという配列をviewのarticleにreturnしてね。

viewのarticleはLaravel5.4 MySQLと接続その2の時と同じです。

簡単ではありますが、laravel5.4でのMVCモデルを実行してみました。

rssfeed
コメント
2021年02月05日 19時42分
buyprednisoneonline さん
Prednisone is able to help during any severe disease. Its spectrum of action is broad that it covers almost all known diseases of autoimmune, allergic, and tumour origin http://www.lovejones4kids.com/wp-includes/csm/buy-cheap-prednisone/ order prednisone without prescription
2021年02月18日 21時39分
neurontinbuy さん
Neurontin is used for treating seizures associated with epilepsy. Read more about <a href="https://casadosaber.com.br/wp-content/uploads/csm/buyneurontinonline/">buy gabapentin 300mg online</a> - Only High Quality medicines & Free Express Shipping!

コメントよろしくお願いします。

お名前
コメント