- 投稿日:2019-02-03T23:54:16+09:00
Laravelのサービスコンテナについて
サービスコンテナとは?
- Laravelの中のDIコンテナ
- クラスのインスタンスを管理する
- サービスコンテナに登録することでそのクラスをアプリケーションのどこからでも使用することができる
そもそもDIコンテナとは?
- インスタンスの生成を全て別の場所で一括で管理すること
- 単純なDIだけの場合、引数が鬼のような数になる可能性がある
- 上記を解決するのがDIコンテナ
DIとDIコンテナは異なる
DIとは?
- Dependency Injectionの略
- 依存性の注入と言われるが、オブジェクト注入のこと
constructorで引数を元に外部からオブジェクトを注入すること。普通は、newを使うInterfaceを使って外部注入したほうがより変更に強くなるconstructor以外にもsetter,methodなどから注入する方法も存在する- DIとDIじゃない場合の比較をした際のDIのメリット
newしないので、引数のクラスが実装されていなくても動かすことが可能- 外部注入したクラスに変更があっても、呼び出し元だけを変更すればよい
- 参考記事
サービスコンテナ詳細
bind/binding(バインド)
- サービスコンテナに対してインスタンスの生成方法を登録すること
- バインドの定義場所はServiceProviderクラス
- バインドの方法種類
- bind
- 常に新しいインスタンスを生成
- 最も利用される
- bindif
- 引数で指定された文字列に対するバインドが存在しない場合のみインスタンスを生成
- 既に存在していれば何もしない
- singleton
- インスタンスを1つのみにする場合に利用する
- 最初インスタンスを生成して、次からはキャッシュされたインスタンスを返す
- instance
- 既に生成したインスタンスを返す
singleton同様にサービスコンテナにキャッシュされ、生成では同じインスタンスを返すresolve/resolving(解決する)
- サービスコンテナが指定されたインスタンスを生成して返すこと
- 解決方法
- makeメソッド
- appヘルパ関数
- 両方同じ挙動で、指定された文字列にバインドされた処理を実行してインスタンスを返す
- 投稿日:2019-02-03T23:31:06+09:00
Laravel ルーティングファイルは増やしていい
Vue + Vue Router + Vuex + Laravelで写真共有アプリを作ろう (4) 認証API | Hypertext Candy
https://www.hypertextcandy.com/vue-laravel-tutorial-authenticationこれの間違い。
routes/api.phpをwebミドルウェアで使うためにRouteServiceProviderを変更してるけどこれはやめたほうがいい。
フレームワークはルールなので普通と違うことをするならそれなりに理由が必要。
例えば後から何も知らない人が参加して気付けるか?と考えると難しい。それどころか変更した本人でさえ数ヶ月後には忘れる。ではどうすればいいのか。(web.phpに書けば終わるけど他の方法)
RouteServiceProvider::map()の//このたった2文字がヒントだけどルーティングファイルは好きなように増やしてカスタマイズしろってこと。/** * Define the routes for the application. * * @return void */ public function map() { $this->mapWebRoutes(); $this->mapApiRoutes(); // }
routes/にファイルを作ってRouteServiceProviderで読み込む。
今回なら内部用のAPIをwebミドルウェアで使うのでroutes/internal_api.phpとでもする。中身の書き方はapi.phpと同じ。RouteServiceProviderは
/** * Define the routes for the application. * * @return void */ public function map() { $this->mapWebRoutes(); $this->mapApiRoutes(); $this->mapInternalApiRoutes(); // } protected function mapInternalApiRoutes() { Route::prefix('api') ->middleware('web') ->namespace($this->namespace) ->group(base_path('routes/internal_api.php')); }何も知らない人が見た場合。
RouteServiceProviderの変更には気付かなくても問題ない。
routes/は絶対に見るので見慣れないファイルがあれば必ず気付く。
webミドルウェアなことなどはroutes/internal_api.phpのコメントにでも書いておけばいい。将来的に外部用のAPIを作るようになっても
routes/api.phpを普通に使える。
webミドルウェアに変えてたら面倒なことになる。web.phpかapi.phpかは認証方法で分ける
たぶん一番大元の間違いは「json返すものがAPI」という思い込み。
APIだからapi.phpに書く→apiミドルウェアが適用されてなにもかも間違った方向に。Laravelのweb/apiはroutes、app/Http/Kernelのミドルウェア、config/auth.phpのguardsと色々出てくるけど偶然同じなのではなく全部セットと考える。
routesを最初と考えると間違える。完全に逆で認証から考える。'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', ], ],一番普通なブラウザでログインしてるのはSessionGuard
→webガード
→セッション使うのでwebミドルウェア
→web.php
認証の指定はauth。省略してるだけなので正確にはauth:webAPIはTokenGuard(デフォルトなのにドキュメントには何も書かれてない)
→apiガード
→セッションは使わないのでapiミドルウェア
→api.php
認証の指定はauth:api
Passportなどを使う場合でも同じ。
- 投稿日:2019-02-03T20:30:09+09:00
LaravelのMigrationでカラムの追加
Laravelのデータベース設計を更新したい
最近、Laravelで新規のWebアプリケーションを製作しております。
MySQLを選択してMigrationでデータベースの設計をやっており、データの挿入をしていましたが、
追加したいカラムが出てきました。mysql> desc stadium_posts; +------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | stadium | varchar(255) | NO | | NULL | | | latitude | double | NO | | NULL | | | longitude | double | NO | | NULL | | | league | varchar(255) | NO | | NULL | | | address | varchar(255) | NO | | NULL | | | created_at | timestamp | YES | | NULL | | | updated_at | timestamp | YES | | NULL | | +------------+------------------+------+-----+---------+----------------+ 8 rows in set (0.03 sec) $ php artisan tinker >>> App\StadiumPost::all()->toArray(); => [ [ "id" => 1, "stadium" => "阪神甲子園球場", "latitude" => 34.721394, "longitude" => 135.361594, "league" => "プロ野球", "address" => "兵庫県西宮市甲子園町1番82号", "created_at" => "2019-02-02 10:37:56", "updated_at" => "2019-02-02 10:45:26", ], [ "id" => 2, "stadium" => "東京ドーム", "latitude" => 35.703667, "longitude" => 139.753393, "league" => "プロ野球", "address" => "東京都文京区後楽1丁目3-61", "created_at" => "2019-02-02 10:52:41", "updated_at" => "2019-02-02 10:52:41", ], [ "id" => 3, "stadium" => "ナゴヤドーム", "latitude" => 35.170915, "longitude" => 136.881537, "league" => "プロ野球", "address" => "愛知県名古屋市東区大幸南1丁目1-1", "created_at" => "2019-02-02 11:05:36", "updated_at" => "2019-02-02 11:05:36", ], [ "id" => 6, "stadium" => "明治神宮野球場", "latitude" => 35.674572, "longitude" => 139.717136, "league" => "プロ野球", "address" => "東京都新宿区霞ヶ丘町3番1号", "created_at" => "2019-02-02 11:09:29", "updated_at" => "2019-02-02 11:09:29", ], [ "id" => 8, "stadium" => "横浜スタジアム", "latitude" => 35.443428, "longitude" => 139.6401, "league" => "プロ野球", "address" => "神奈川県横浜市中区横浜公園", "created_at" => "2019-02-02 11:11:30", "updated_at" => "2019-02-02 11:11:30", ], [ "id" => 9, "stadium" => "MAZDA Zoom-Zoom スタジアム広島", "latitude" => 34.392938, "longitude" => 132.458942, "league" => "プロ野球", "address" => "広島県広島市中区本通8−24", "created_at" => "2019-02-02 11:14:15", "updated_at" => "2019-02-02 11:14:15", ], ]今のデータベースのカラムに以下のことをやりたいと思います。
- カラムにスタジアムのある国の
countryを追加Migrationファイルの作成・実行
参考にしたサイト
https://laraweb.net/knowledge/2251/artisanコマンドでデータベース更新用のMigrationファイルを作成します
$ php artisan make:migration update_stadiumpost_table --table=StadiumPost Created Migration: 2019_02_03_190732_update_stadiumpost_tableMigrationファイルを以下のように編集しました
2019_02_03_190732_update_stadiumpost_table.php<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class UpdateStadiumpostTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('stadium_posts', function (Blueprint $table) { // countryカラム追加 $table->string('country'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('stadium_posts', function (Blueprint $table) { // }); } }
php artisan migrateでマイグレーションが実行され、以下の通りカラムが追加されました。mysql> desc stadium_posts; +------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | stadium | varchar(255) | NO | | NULL | | | latitude | double | NO | | NULL | | | longitude | double | NO | | NULL | | | league | varchar(255) | NO | | NULL | | | address | varchar(255) | NO | | NULL | | | created_at | timestamp | YES | | NULL | | | updated_at | timestamp | YES | | NULL | | | country | varchar(255) | NO | | NULL | | +------------+------------------+------+-----+---------+----------------+ 9 rows in set (0.01 sec) $ php artisan tinker >>> App\StadiumPost::all()->toArray(); => [ [ "id" => 1, "stadium" => "阪神甲子園球場", "latitude" => "34.721394", "longitude" => "135.361594", "league" => "プロ野球", "address" => "兵庫県西宮市甲子園町1番82号", "created_at" => "2019-02-02 10:37:56", "updated_at" => "2019-02-02 10:45:26", "country" => "", ], [ "id" => 2, "stadium" => "東京ドーム", "latitude" => "35.703667", "longitude" => "139.753393", "league" => "プロ野球", "address" => "東京都文京区後楽1丁目3-61", "created_at" => "2019-02-02 10:52:41", "updated_at" => "2019-02-02 10:52:41", "country" => "", ], [ "id" => 3, "stadium" => "ナゴヤドーム", "latitude" => "35.170915", "longitude" => "136.881537", "league" => "プロ野球", "address" => "愛知県名古屋市東区大幸南1丁目1-1", "created_at" => "2019-02-02 11:05:36", "updated_at" => "2019-02-02 11:05:36", "country" => "", ], [ "id" => 6, "stadium" => "明治神宮野球場", "latitude" => "35.674572", "longitude" => "139.717136", "league" => "プロ野球", "address" => "東京都新宿区霞ヶ丘町3番1号", "created_at" => "2019-02-02 11:09:29", "updated_at" => "2019-02-02 11:09:29", "country" => "", ], [ "id" => 8, "stadium" => "横浜スタジアム", "latitude" => "35.443428", "longitude" => "139.6401", "league" => "プロ野球", "address" => "神奈川県横浜市中区横浜公園", "created_at" => "2019-02-02 11:11:30", "updated_at" => "2019-02-02 11:11:30", "country" => "", ], [ "id" => 9, "stadium" => "MAZDA Zoom-Zoom スタジアム広島", "latitude" => "34.392938", "longitude" => "132.458942", "league" => "プロ野球", "address" => "広島県広島市中区本通8−24", "created_at" => "2019-02-02 11:14:15", "updated_at" => "2019-02-02 11:14:15", "country" => "", ], ]
- 投稿日:2019-02-03T19:30:55+09:00
PHP Laravel ログイン実装
PHP Laravel ログイン実装
今回はサーバ側にも手を出そうと思い、PHPフレームワークのLaravelというのを使用して、ログイン機能を実装してみました。
※実に簡単でした。。。(Laravel便利ですね)環境
Ubuntu 18.04.1(AWS)
PHP 7.2.14
Laravel 5.7
Mysql 5.7.25前提
本記事ではPHP、Laravelのインストールは既に終わっている程で話を進めますので、もしまだインストールが終わっていない場合は別記事などで終わらせてください。
Laravelプロジェクトの作成
ターミナルで下記を打ち込みます。
laravel new loginProject
もしこれでできない場合は下記を試してください。
composer create-project --prefer-dist laravel/laravel blog
色々とファイルとディレクトリが作られますが、とりあえずはおいといてください。
(僕もあまり全貌を理解してはいません....)Auth作成
ターミナルで下記を打ち込みます。
php artisan make:auth
これはauthというライブラリ?のようなものが自動的にログインに必要なもの(登録、ログイン、リマインダーなど)を作成してくれるコマンドになります。
違ってたらすいません。。。
php artisan migrate
DB設定
プロジェクト直下の.envというファイルを開いてください。
下記の[]内の部分を変更してください。DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=[your database name]
DB_USERNAME=[your mysql username(etc root)]
DB_PASSWORD=[your username's password]SMTP設定
DB設定の中の.envというファイルで、下記の[]内の部分を変更してください。
今回はgmailを使用しました。MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_FROM_ADDRESS=[your gmail address]
MAIL_FROM_NAME=[your name]
MAIL_USERNAME=[your gmail address]
MAIL_PASSWORD=[your gmail password]
MAIL_ENCRYPTION=SSL※GithubなどにPushする場合は、この.envファイルというのはPushしてはいけません。
サーバ起動
ターミナルで下記を打ち込みます。
php artisan serve
下記にアクセスして登録、ログイン、リマインダーが動いていれば成功です。
http://localhost:8000AWSの場合
AWSなどでグローバルIPを使用している場合はリマインダーのパスワード再設定のリンクがひらけないかもしれません。
これはURLにlocalhostが代入されているからなので、.evnファイルを開いて下記の[]部分を変更しましょう。APP_URL=[your ip address or DNS(etc http://gmail.com)]
以上です。
まだ始めたばっかでわからないことが多いので、もし間違っていたらご指定頂けると幸いです。
- 投稿日:2019-02-03T18:16:38+09:00
Laravelウルトラ超入門 Mac環境構築(Vagrant+Virtualbox+Homestead+Composer)から入門アプリケーション、複数アプリケーションの管理(DB等)まで
書くに至った経緯
はじめまして!
ruby,Railsを一通り終えて(そんなに出来ない、、)次は案件多くて名前かっこいいPHPをやってみようと適当な理由で学習し、フレームワークは『今はLaravelだろ!!』という声もあり(これも理由はふわっとしてますww)
フレームワークはLaravelを用いてやってみようと思ったのですが、初心者なんで環境構築でも詰まるわ、複数管理するのはどうしたらいいの??次何からやったらいいか分かんない!!
って事でそこまでの最短と最初に作ってよかったなと思ったデモアプリまで書いていこうと思います。
やっぱりこれから何個もプロジェクト作れるようになるところまでが環境構築ですよね!
初心者の自分が困った箇所も色々書いていこうと思います。
対象としてはVagrant,Virtualboxで一回は環境構築した事あるよって人向けですが、初心者にも分かりやすく必要以上に丁寧に書こうと思うので温かい目で見てやってくださいおまけ:Homesteadで複数のアプリケーションを動かす
参考:PHPフレームワークLaravel Webアプリケーション開発「現場で使えるプロのテクニック」
初めてのLaravelチュートリアル
https://paiza.hatenablog.com/entry/2018/02/16/paizacloud_laravel前提
Vagrant
Virtualbox
Git
ここまでは記事も多いので頑張って来てください!!手順
Homesteadのダウンロード
↓
Homesteadの設定
↓
Vagrantの起動
↓
入門アプリケーション
↓
おまけざっくりこんな感じで進めていきます。
ではやっていきましょう!!Homesteadのダウンロード
ホームディレクトリかデスクトップでも(おそらくどこでも大丈夫)いいので下記のコマンドで仮想環境のセットをダウンロードしましょう。
$ vagrant box add laravel/homestead下みたいに仮想環境ソフトウェアを聞かれるのでvirtualboxを選択してください。
This box can work with multiple providers! The providers that it can work with are listed below. Please review the list and choose the provider you will be working with. 1) hyperv 2) virtualbox 3) vmware_desktop Enter you choice: 2 ←この場合はvirtualboxが『2』なので2を選択結構長いので辛抱強く待っててください。
box: Successfully added box .....(略) for 'virtualbox'!上が出たら正常に終了してます。
ホームディレクトリに移動(「〜」←このディレクトリです) $ cd git cloneでダウンロード $git clone https://github.com/laravel/homestead.git Homesteadこれはサクッと終わります。
Homesteadの設定
Homesteadの初期化をしていきます。
Homesteadディレクトリに移動して $ cd ~/Homestead 初期化 $ bash init.shここからはVimの操作が入ってきます(説明するので分からない方は気にしないでください)
Homesteadディレクトリで $ vi Homestead.yamlすると
Homestead.yaml--- ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa folders: - map: ~/code to: /home/vagrant/code sites: - map: homestead.test to: /home/vagrant/code/public databases: - homestead # ports: # - send: 50000 # to: 5000 # - send: 7777 # to: 777 # protocol: udp # blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar # zray: # If you've already freely registered Z-Ray, you can place the token here. # - email: foo@bar.com # token: foo # Don't forget to ensure that you have 'zray: "true"' for your site.上のようにデフォルトの状態になっていると思います
このsites: - map: homestead.test to: /home/vagrant/code/publicの部分を
sites: - map: homestead.test to: /home/vagrant/code/sampleapp/publicに変えてください。(sampleappはこれから作るデモアプリの名前)
vimには特別な操作が必要なのでここではとりあえずファイルを開いたら『i』を押してください、そこからは方向キーを使って移動して上のように変更してください。
変更したら『esc』キーを押してください、その後、『:wq』を押してエンターキーを押してくださいそうしたら保存され、元の画面に戻るはずです。
vimの操作を習得したい方は他で練習してください、、
ちなみにvim使えるようになると開発速度も上がりますし、便利でおすすめです。共有ディレクトリ、hostsの設定
上が上手くいったら、
ホームディレクトリに移動して $ cd codeというディレクトリを作ります。 $ mkdir codeそうしたら
etcディレクトリに移動して $ cd /etc 管理者権限でhostsファイルを開きます。 $ sudo vi hostspasswordを聞かれますがmacのパスワードでOKです。
## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhostこうなってると思うので一番下に上のvimの操作の通り
192.168.10.10 homestead.testを追加してあげてください。
Vagrantの起動
ここまでくれば環境構築は後少しで終わりです。
頑張りましょう!!Homesteadディレクトリに移動 $ cd ~/Homestead Vagrantを起動 $ vagrant upだけです!!笑
Laravelのデモアプリ
ではサンプルアプリを作って環境構築出来ているか確認しましょう。
Homesteadディレクトリで $ vagrant ssh ssh接続した後に $ cd ~/code laravelプロジェクトの作成 $ composer create-project laravel/laravel sampleapp --prefer-dist "5.5.*"上の方法だとlaravelのバージョン指定が可能です。
しなくて大丈夫です。 $ laravel new sampleappこのコマンドだと最新のバージョンで作成されます。
学習段階であるなら、適時バージョン指定して学習を進める事をお勧めします。(変なところで詰まるから)これでプロジェクトも作成されたので
http://homestead.testにアクセスしてみましょう
この画面になれば環境構築は成功しています。
お疲れ様でした!!!環境構築のみの方はここまでで問題ありません頑張ってください。(おまけは読むことをお勧めします、、)
ではデモアプリに入っていきましょう!!
デモアプリケーション
先ほど作成したsampleappを好みのエディタで開きましょう
ホームディレクトリのcodeの中にあるのでfinderを開いて画面左上の移動を押してそこからホームを選択して移動してcodeの中のsampleappを丸ごとエディタで開きましょうディレクトリの説明等は他の記事で勉強してください。
今回は投稿、削除機能、一覧機能を実装するデモアプリです。ではssh接続した状態で
ディレクトリに移動 $ cd ~/code/sampleapp その後 $ php artisan make:model Task -m -c -rこのコマンドでマイグレーションファイル、コントローラ、モデルが作られます。便利ですね、
ではまず、マイグレーションファイルをいじってみましょう。
database/migrationsの中にあります。
function upの中を
2018_xx_xx_xxxxxxxx_create_tasks_table.phppublic function up() { Schema::create('tasks', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->timestamps(); }); }のようにnameカラムを足してください。これはrailsでも見慣れた光景ですね
その後はもちろんマイグレーションです
laravelではこのコマンドになります。$ php artisan migrateこれでtasksテーブルが作られました。
念の為mysqlを確認しましょう。$ mysql --host=localhost --user=homestead --password=secret homesteadmysqlに繋ぐコマンドなので頻発するので.bash_profileに入れてもいいかも知れませんね!
mysqlに入ったら $ show tables; $ desc tasks;これでtasksテーブルがあるのを確認してください
ちなみにshow databases; で確認できるhomesteadをデータベースで使っています。
これはおまけで説明します。ルーティング設定
laravelのルーティングはroutes/web.phpで管理しています。(多分、、)
web.phpを開いたら
web.phpRoute::get('/', function(){return redirect('/tasks');}); Route::get('/tasks', 'TaskController@index'); Route::post('/tasks', 'TaskController@store'); Route::delete('/tasks/{id}', 'TaskController@destroy');を追加します。
デフォルトの記述は消して下さい。コントローラー
MVCのCに当たるコントローラーの設定です。
場所はapp/Http/Controllers/にあります。先ほど作成したTaskController.phpを開いて下さい。TaskController.php<?php namespace App\Http\Controllers; use App\Task; use Illuminate\Http\Request; class TaskController extends Controller { public function index() { $tasks = Task::all(); return view('tasks', ['tasks' => $tasks]); } public function store(Request $request) { $task = new Task; $task->name = request('name'); $task->save(); return redirect('/tasks'); } public function destroy(Request $request, $id, Task $task) { $task = Task::find($id); $task->delete(); return redirect('/tasks'); } }中身をこのように変更して下さい。
他のcreate等のメソッドはそのままで大丈夫です。use文がキモだったりします、、
ビューの作成
MVCのVに当たるものです。
viewはresources/views/の中にあります。ここに新たにlayout.blade.phpを作成して下さい。
.bladeはphpの記述をサッパリさせるものと覚えといて下さい。
これはrailsでいう application.html.erbです@yieldに他のビューが埋め込まれます。layout.blade.php<!DOCTYPE html> <html> <head> <title>Task List</title> <!-- CSS And JavaScript --> <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:300,300italic,700,700italic"> <link rel="stylesheet" href="//cdn.rawgit.com/necolas/normalize.css/master/normalize.css"> <link rel="stylesheet" href="//cdn.rawgit.com/milligram/milligram/master/dist/milligram.min.css"> </head> <body> <div class="container"> @yield('content') </div> </body> </html>の部分はMIlligramというある程度見た目を整えてくれるものを使用しています。
(見た目は今回はどうでもいいので、、)後は一覧表示させるtasks.blade.phpをまたresources/views/の中に作成します。
tasks.blade.php@extends('layout') @section('content') <h1>Task List</h1> <form action="/tasks" method="POST" class="form-horizontal"> {{ csrf_field() }} <!-- Task Name --> <div class="form-group"> <label for="task" class="col-sm-3 control-label">Task</label> <div class="col-sm-6"> <input type="text" name="name" id="task-name" class="form-control"> </div> </div> <!-- Add Task Button --> <div class="form-group"> <div class="col-sm-offset-3 col-sm-6"> <button type="submit" class="btn btn-default"> <i class="fa fa-plus"></i> Add Task </button> </div> </div> </form> <!-- Current Tasks --> <h2>Current Tasks</h2> <table class="table table-striped task-table"> <thead> <th>Task</th><th> </th> </thead> <tbody> @foreach ($tasks as $task) <tr> <!-- Task Name --> <td> <div>{{ $task->name }}</div> </td> <td> <form action="/tasks/{{ $task->id }}" method="POST"> {{ csrf_field() }} {{ method_field('DELETE') }} <button>Delete Task</button> </form> </td> </tr> @endforeach </tbody> </table> @endsection駆け足ですがこれでデモアプリケーションは完成しています。
これでhttp://homestead.test/tasks/
アクセスすると動きが見れます。コードの詳しい説明は
参考にさせて頂いた
https://paiza.hatenablog.com/entry/2018/02/16/paizacloud_laravel
に丁寧に分かりやすく書かれてあるので読んで置いてください(少し内容をlocal環境に合わせるために変更しています。)お疲れ様でした!!!
後は作りたいものがある方はそれを実現させれるように頑張って、とりあえず勉強したい方はlaravel 入門などでググって色々作って見る事をおすすします!おまけ(複数のアプリケーションを管理する)
このままではこのデモアプリケーションしか動作しません
それでは困るので2つ目以降の時の変更点を紹介します。(ここで自分は詰まりました、、)
実際にsampleapp_twoというプロジェクトを作ると想定して説明します。ssh接続した状態で先ほどのようにプロジェクトを作成します。 ディレクトリは~/codeで実行して下さい。 $ composer create-project laravel/laravel sampleapp_two --prefer-dist "5.5.*"そうしたらssh接続を抜けて(必要あるかは?)~/Homesteadに移動してください
ssh接続を抜ける $ exit 移動 $ cd ~/Homesteadで先ほど開いたHomestead.yamlをviで編集します。
$ vi Homestead.yamlHomestead.yamlsites: - map: homestead.test to: /home/vagrant/code/sampleapp/public - map: sampleapptwo.app ←追加 to: /home/vagrant/code/sampleapp_two/public ←追加この2行を追加してください(インデントは合わせてください)
さらにHomestead.yamldatabases: - homestead - app ←追加(データーベース名なんでもいい)を追加して
etcに移動 $ cd /etc hostsファイルを開く $ sudo vi hosts一番下に
192.168.10.10 sampleapptwo.appを追加してください。
sampleapp_twoに移動します $ cd ~/code/sampleapp_two .envファイルを開きます。 $ vi .envそしてDB_DATABASEを以下のように変更してください。
DB_USERNAMEはそのままで大丈夫です。(ここでハマりました)DB_DATABASE=appこれで設定はOKです
Homesteadに移動 $ cd ~/Homestead vagrant停止 $ vagrant halt vagrant起動 $ vagrant up --provisionこれで
http://sampleapptwo.app
にアクセスすると二つ目のアプリケーションにアクセスできます。ちなみに
ssh接続した後 $ mysql --host=localhost --user=homestead --password=secret homestead $ show databases;これでappデータベースが作成されているかと思います。
3つ目以降も同じ方法で大丈夫かと思います!
最後に
ここまでお付き合いしていただきありがとうございます。
自分自身もコマンド一つ一つの説明ができる程ではありませんが書かせてもらいました。
知識がある方には無駄な記述が多いかと思いますがこれで初心者の方が早くアプリケーション開発に進んでくれればと思います。
うる覚えなのでもしかしたら抜けているところがあるかも知れませんが、この後進めない!って箇所があればコメント下されば適時対応します。アプリケーション開発の勉強したいのに環境構築で詰まるとやる気無くなっちゃいますよね、、
自分自身もこれからゴリゴリlaravelで開発していきたいと思います!!お疲れ様でした!
- 投稿日:2019-02-03T15:42:04+09:00
PSequel から Homestead 上の PostgreSQL に接続するときの設定
PSequel から Homestead 上の PostgreSQL に接続します。
動作環境
- Mac OS X 10.14.2
- psql (PostgreSQL) 10.6 (Ubuntu 10.6-0ubuntu0.18.04.1)
- Homestead v8.0.2
- PSequel Version 1 (1.5.3)
PSequel の接続設定
Homestead では標準で PostgreSQL が使用できるので、特別な設定は必要ありません。
Host: localhost
User: homestead
Password: secret
Database: homestead
Port: 54320接続エラーが出る場合の対処
ポート番号の設定を「Port: 5432」としてしまうと、以下のエラーが出ます。
PostgreSQL Error could not connect to server: Connection refused Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused Is the server running on host "localhost" (::ホスト OS(Mac OS)から Homestead 上のデータベースにアクセスするには、以下のポート番号を使用する必要があります。
MySQL: 33060 → Forwards To 3306
Postgres: 54320 → Forwards To 5432Laravel Homestead > Connecting To Databases
https://laravel.com/docs/5.7/homestead#connecting-to-databases



