Help us understand the problem. What is going on with this article?

Laravel事始め

Laravel事始め

簡単な勤怠入力が可能なシステムを作ってみようということで去年末から色々検討した末にバックエンドをPHP/Laravelで構築することに決め、早速触ってみようということで、その流れをざっくりメモ。

記憶を頼りに書いているのでなにか間違っているかもしれない。

内容

  • Windows 10にPHPとLaravelを入れる
  • REST APIでGET/POSTリクエストを受付
    • MySQLを読み書き
  • VSCodeでデバッグする

環境

  • Windows 10 (10.0.18363)
  • MySQL 8.0
  • PHP 7.3.8 TS x64
  • Laravel 6.11.0
  • VSCode 1.14.1

導入編

MySQLの導入

  • dev.mysql.comからMySQL Community Serverを落としてきてインストール

  • Workbenchを起動して適当にDBを作成

PHPの導入

インストール

  • windows.php.netからVC15 x64 Thread Safeを落としてきてPATHを通す
  • xdebug.orgからPHP 7.3 VC15 TS (64 bit)を落としてきてextension_dir配下に配置

設定

  • php.ini-development.iniをコピーしてphp.iniを作成

  • extension_dirのコメントを外しextension_dir = "D:/php/ext"のようにフルパスで設定

  • Dynamic Extensionsセクションで以下の機能を有効化

    • curl
    • mbstring
    • openssl
    • pdo_mysql
    • pdo_sqlite
  • 最終行にxdebugセクションを追加

   [xdebug]
   zend_extension="ふるぱす/php_xdebug-2.9.1-7.3-vc15-x86_64.dll"
   xdebug.remote_enable=1
   xdebug.remote_autostart=1

Laravelの導入

  • getcomposer.orgからComposerを落としてきてインストール
  • composer global require laravel/installerを叩く
  • laravel new hogeでプロジェクトを作成
  • php artisan serveで起動確認

VSCodeの設定

  • 以下の拡張機能をインストール
    • PHP Debug
    • PHP IntelliSense

開発編

DB設定

  • .envを開きDB_CONNECTION=mysqlの辺りを設定

モデルの作成

DBアクセスを提供してくれるっぽい

  • php artisan make:model Hogeでモデルを作成
  • database\migrations\にモデルが出来ているので適当なテーブルレイアウトになるように変更
  • php artisan migrateでDBにテーブルが生える
    • PKとか細かい設定はDB側で変える

コントローラーの作成

HTTPリクエストの受け口。勝手にルーティングしてくれる

  • php artisan make:controller HogeContoller -rでコントローラーを生成
  • 各メソッドの動きは次のような感じっぽい。書いてないのは使ってない
    • index()はコントローラーにGET投げたときに
    • GET: example.com/hoge/
    • show()はコントローラーにパラメーター付きのGET投げたときに
    • GET: example.com/hoge/123
    • store()はコントローラーにPOST投げたときに
    • POST: example.com/hoge/
  • コードの頭の方にuse App\Hoge;としてモデルを参照できるようにする

ルーターの調整

  • routes\web.phpRoute::resource('hoge', 'HogeController');を追加。これで/hogeHogeControllerに割当できるようになる

コントローラーの調整

  • DBの内容を全件返す

    • return response(Hoge::all());
  • DBの内容をフィルタして返す

    • return response(Hoge::all()->where('カラム名', '=', $id));
  • DBにデータを登録する

    • Hoge::create([ "id": "1", "name": "hogeyama hoge" ]);
  • このときモデルapp\Hoge.phpで登録したいフィールドを許可する必要があるので、以下のように実装

  • protected $fillable= array('id', 'name');

トラブルシュート

POSTするとpage expired

  • routes\web.phpRoute::resource('hoge', 'HogeController');を追加した上でstore()にPOSTの処理を書くこと
    • 因みにこれはCSRF関係のエラー

HTTP RESPONSE STATUSが500

  • 実装がなんかおかしいのでデバッグして確認

Failed loading Zend extension 'php_xdebug-

  • xdebugのDLLバージョンやTSの有無が違う。PHPのバージョンやビルドと一致したものにする
  • 指定されたモジュールが見つかりません。と出ている場合は絶対パスで設定する

to fillable property to allow mass assignment

  • モデルの$fillableでDBに登録許可する対象項目を設定する
    • protected $fillable= array('id', 'name');
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした