- 投稿日:2020-07-29T23:56:59+09:00
【Laravel】「ルート定義メソッド」と「ビュールート」の違いって?
ルート情報を用意しよう
通常、Laravelではルート記述をする際、大きく2つの書き方に分類することができます。
今回はその2つの書き方である「ルート定義メソッド」と「ビュールート」をご紹介。記述の例を、route/web.php にコーディングしていきます。ルート定義メソッドの記述
Route::get('URIを記述','SampleController@index'); Route::post('URIを記述','SampleController@create');ルート定義メソッドで記述するとこんな感じになります。
この定義メソッドの特徴としては、・第1引数にURIテキストを記述
・第2引数に、第1引数のURIにマッチした場合の際のコールバックを指定以上の特徴があります。
ビュールートの記述
Route::view('/welcome', 'welcome');ビュールートは上記のような書き方です。
・第1引数にURIテキストを記述
・第2引数に、表示するビューの指定上記の例の場合は、プロジェクトルート直下の「resources/views」内の「welcome.blade.php」を読み込もうとします。
ちなみに、オプションとして第3引数に、ビューへ渡すデータの配列を指定することもできます。
Route::view('/welcome', 'welcome', ['name' => 'Taylor']);リダイレクトルートの記述
他のURIへリダイレクトするルートを定義する記述もできます。Route::redirectを使用しましょう。
Route::redirect('/url', '/idousaki', 301);上記の例では、ブラウザで「/url」にアクセスしたら「/idousaki」にリダイレクトされるルート定義になっています。
- 投稿日:2020-07-29T22:42:10+09:00
LighthouseでInterface TypeとUnion Typeを使いこなす【Laravel + GraphQL】
LighthouseのInterfaceやUnionを実装する際にちょっとハマったのと、それらに関する情報が調べても全然出てこなかったので記事にしました。
環境
PHP: 7.2.5
Laravel: 7.0
Lighthouse: 4.13Interface Type
GraphQLのInterfaceはJavaやPHPでいう抽象(abstruct)フィールドと同様に、Interfaceで定義したフィールドを継承したTypeでも提供することを求められます。
またInterfaceを継承したTypeではそれ以外の値は自由に付け足すことが可能です。
GraphQL:Schemas and Types#Interfaces
interface Animal { id: ID! name: String! } type Cat implements Animal { id: ID! name: String! feed: String } type Dog implements Animal { id: ID! name: String! favorite: [DogItem!]! } type DogItem { id: ID! name: String }Iterface Typeを使用するメリットはそれ自体をQueryやMutationの引数や返り値に指定できることです。
例えば以下のような動物の一覧を返すQueryを定義したとします。
schema.graphqltype Query { animals: [Animal!]! }これを実行した場合、次のように
Cat
とDog
Typeが混ざったレスポンスが得られます。queryquery { animals { id name __typename ... on Cat { feed } ... on Dog { favorite { id name } } } }response{ "data": { "animals": [ { "id": "1", "name": "hoge_cat", "__typename": "Cat", "feed": "pet_food" }, { "id": "2", "name": "fuga_dog", "__typename": "Dog", "favorite": [ { "id": "1", "name": "ball" } ] }, { "id": "3", "name": "piyo_cat", "__typename": "Cat", "feed": "cat_food" } ] } }実装上の注意点
LighthouseでInterfaceを用いて実装するには通常のディレクティブ(@allや@createなど)を使用することはできず、Resolverを使用する必要があります。
$ php artisan lighthouse:query AnimalResolverschema.graphqltype Query { animals: [Animal!]! @field(resolver: "App\\GraphQL\\Queries\\AnimalResolver@list") }またInterfaceを継承するTypeと同名の
Cat
やDog
のモデルも作成します。
この時、配列や異なる名前のモデルを使用するとbasename() expects parameter 1 to be string, array given
というエラーが発生するので注意しましょう。$ php artisan make:model Cat $ php artisan make:model DogApp\GraphQL\Queries\AnimalResolverclass AnimalResolver { public function list($rootValue, array $args, GraphQLContext $context, ResolveInfo $resolveInfo) { $hoge_cat = new Cat; $hoge_cat->id = 1; $hoge_cat->name = 'hoge_cat'; $hoge_cat->feed = 'pet_food'; $fuga_dog = new Dog; $fuga_dog->id = 2; $fuga_dog->name = 'fuga_dog'; // ※Interfaceを継承していない通常のTypeは配列でも問題ない。 $fuga_dog_item = [ 'id' => 1, 'name' => 'ball' ]; // モデルを使用する場合は以下のようにする。 // $fuga_dog_item = new DogItem; // $fuga_dog_item->id = 1; // $fuga_dog_item->name = 'ball'; $fuga_dog->favorite = [$fuga_dog_item]; $piyo_cat = new Cat; $piyo_cat->id = 3; $piyo_cat->name = 'piyo_cat'; $piyo_cat->feed = 'cat_food'; return [ $hoge_cat, $fuga_dog, $piyo_cat ]; } }Union
Union Typeは他のTypeを単に列挙する抽象Typeです。
ただしInterfaceとは異なり、フィールドを定義することはできません。GraphQL:Schemas and Types#Union types
union Book = Novel | Comic type Novel { novel_title: String! } type Comic { comic_title: String! }Queryの実行方法はInterfaceと同様に
on
を用いることでそれぞれのTypeのレスポンスを指定することができます。schema.graphqltype Query { books: [Book!]! }queryquery { books { __typename ... on Novel { novel_title } ... on Comic { comic_title } } }response{ "data": { "books": [ { "__typename": "Novel", "novel_title": "hoge title" }, { "__typename": "Comic", "comic_title": "comic title" } ] } }実装上の注意点
Interfaceと同様にUnionを用いる場合には通常のディレクティブを使用できないため、Resolverを使用する必要があります。
またレスポンスのTypeに関してもModelを使用しないとエラーとなるので注意しましょう。
App\GraphQL\Queries\BookResolverclass BookResolver { public function list($rootValue, array $args, GraphQLContext $context, ResolveInfo $resolveInfo) { $novel = new Novel; $novel->novel_title = 'hoge title'; $comic = new Comic; $comic->comic_title = 'fuga title'; return [ $novel, $comic ]; } }参考文献
- 投稿日:2020-07-29T20:19:21+09:00
古のエンジニアがlaravelを初めて触って習熟していく流れで、とても参考になった記事まとめ
経緯
普段はフロントエンド、vueやnuxtの開発を中心にやっています。今回はバックエンドも含めて開発する案件を受注したことをきっかけに、最近流行ってるlaravelでバックエンドを作ってみるか、ということになりました。
もともと、LAMP環境の構築やphp,mysqlは経験がある古のエンジニアです。
以前は素のphp+mysqlでフレームワークを使わずゴリゴリ書いていました。開発環境はlinux(CentOS)をベアメタルサーバーにインストールして、phpやmysqlをソースからインストールしたりして使う、そういう時代のエンジニアです。HTTPサーバーといえばapacheでしょ?という時代から、最近のAWSは便利だよね〜という時代を生きてきた人です。
ちなみにデータセンターにオンプレミス環境を構築して月間数億PVのアクセスがあるソシャゲの開発運用とかを一人でやったりしていました。AWSに移行してからはRDSの負荷分散のためmemcachedサーバーにキャッシュレイヤーを作ったり、懐かしい。
話はそれてしまいましたが、最近はフロントエンド中心の開発案件をやっています。
バックエンドとのやり取りはAPIでやることが主流の時代になってきました。久しぶりにバックエンド作るので、最新のモダンで人気なフレームワークをいっちょやってやるか!と思い人気のlaravelに目をつけたわけです。
laravelを選んだ理由
- 日本語で書かれたドキュメントやサンプルが多い
- AWSとの連携が組み込み済み
- API用のレイヤーが標準装備
- Model経由でのDBとの密な連携
この辺です。テーブル作成はphpmyadminで、PHPの中にSQLを直書きしていた私からすると、アプリケーション内からModelでDBと密接に結合しているのは新鮮です。
フロントエンドとはAPIで連携するので、その辺の機能も標準装備していることに魅力を感じました。
開発環境構築
https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4
Laravel環境構築はこちらの神リポジトリをcloneしてdockerで一発です。すごい便利な時代になったものですなぁ、昔はLinuxのインスト(ry
laravelのtableを作ってみて、表示させてみる
えっ!DBのテーブルってphpmyadminでチマチマ作るんじゃないんですか?
なるほど、作成、変更履歴も残せるマイグレーションと言うのがあるのか…
https://noumenon-th.net/programming/2020/01/15/laravel-mysql/
larvel passportでAPI認証のバックエンド側基本を作る→やめた
シンプルなjwtに切り替えました。
https://www.whizz-tech.co.jp/1442/
composer dumpautoloadってなんだ?
おかしくなったときはこれ。でもあまり使わない。
https://qiita.com/WebSysRider/items/e41f211f8c913e008d03
laravel上でvueベースの認証画面を作る
基本のapiのやりとり。
https://www.whizz-tech.co.jp/1453/
nodeが無いと言われたのでこちらでDockerを再構築
https://zukucode.com/2019/06/docker-laravel-nodejs.html
http://127.0.0.1/register
にアクセスしてみるnpm run devが抜けていたため、以下のファイルが見つからんかった
/css/app.css 178 KiB /js/app [emitted] /js/app
/js/app.js 1.4 MiB /js/app [emitted] /js/app再度アクセスするとうまくいった
Personal access client not found. Please create one. エラーがでる
php artisan passport:client --personal
上記コマンドならうまくいく、
その後webで再度やるとうまく行った。なんでや?
makefileのinitに以下のコマンドを追加した→削除
docker-compose exec app php artisan passport:install
laravelのアクセスがやったら重いんですけど
Docker for Mac限定の問題。
色々試しましたけど、最終的には直接php artisan serveすることで解決。dockerのvolumeのマウントが原因。 :delegatedをつけたら少し軽くなった。
https://wonwon-eater.com/mac-docker-performance/
/api/userにアクセスしてもなにも起こらない
忘れがち
なお、JSONが返されるのはLaravel5.3のデフォルトではヘッダーにX-Requested-With: XMLHttpRequestがある、またはAcceptヘッダーでjsonが指定されている場合です。(fetchにネイティブ対応しているブラウザではそれを使用した場合明示的にAcceptを指定してやらないと前者の対象にはならずにリダイレクトが発生し200になります。宇宙。)
https://blog.hinaloe.net/2016/09/15/try-passport-laravel-5-3/Acceptヘッダとauth Bearerヘッダを追加して再確認、うまくいった。
よく考えたら、backendフォルダ内で直接laravel動かしたらいいんじゃね?
→動いた。ローカルなので応答も早い。
DBの接続情報を変更する必要がある。Dockerコンテナは環境変数を変更しているため。DB_DATABASE=laravel_local DB_USERNAME=phper DB_PASSWORD=secret.envの更新を反映させるにはコマンドが必要
php artisan cache:clear php artisan config:cachepassportやめたい
composer.jsonを編集して composer update
https://ja.coder.work/so/laravel/545565
認証APIをjwtで作り直し
参考
https://re-engines.com/2019/06/03/laravelで認証apiを作る/
うごかないなんでや
https://github.com/tymondesigns/jwt-auth/issues/1484replace
'expires_in' => auth()->factory()->getTTL() * 60
by
'expires_in' => auth('api')->factory()->getTTL() * 60うごいた。ここでtokenの有効期限も設定できるっぽい
認証APIにregisterを移植した
バリデーションも合わせて実装した
userのcrudをAPIで実装する
参考
https://qiita.com/sutara79/items/cd4371b246b44a2cf87fputのrequestが空っぽなんなんでや??
postmanの設定だった
https://qiita.com/wjtnk/items/eb2ddcc0642dc3197671
PUT時にuserが見つからない場合に出るModelNotFoundExceptionエラーをカスタマイズする
abortの第一引数にresponceを渡さないとstach traceが出るみたいだぞ?
https://laraveldaily.com/laravel-api-404-response-return-json-instead-of-webpage-error/
その他、細かく設定する場合
https://qiita.com/sakuraya/items/af38c4cf84459a8b5967基本形
Handler.phppublic function render($request, Throwable $exception) { if ($exception instanceof ModelNotFoundException) { abort(response()->json(['message' => 'not found'], 404)); } return parent::render($request, $exception); }コードフォーマッタとリンターがないので入れる
https://www.ritolab.com/entry/188#aj_3
開発用のメールサーバー
ブラックホールメールサーバーのDockerコンテナを開発用に立てる
http://127.0.0.1:1080 で送信したメールが全部見れる。なんて便利な世の中や・・https://qiita.com/kanemu/items/1f2da063c7e5b5477502
seederでダミーデータを適当に作る。マスタデータも作れる。
https://qiita.com/shosho/items/b69db263a494edfe3b21
Route::resources で全部使わないよ!って場合
https://qiita.com/sympe/items/9297f41d5f7a9d91aa11
もはや個別にmodel,controllerとか作らなくても良くない?全部まとめて作れるで
https://qiita.com/niisan-tokyo/items/9c799989cb535489f201
管理画面をlaravel-adminで作る
https://laravel-admin.org/docs/#/
https://tac-blog.tech/index.php/2018/09/29/laravel-admin-add-crud/管理設定をmigrationできるようにseederに追加する
https://qiita.com/ntm718/items/5ea29ee70b50320352c4
基本のDBクエリビルド
https://www.ritolab.com/entry/93#aj_11_1
Laravel debaggerを入れる
https://qiita.com/sutara79/items/9fd442a81001842aeba1
apiResource
https://www.webopixel.net/php/1526.html
純粋なAPIで使用するCRUDの場合はapiResourceを使用します。
Route::apiResource('users', 'UsersController');
これで、index,store,show,update,destroyが使用できるようになります。
複数のコントローラーをまとめて指定する場合はapiResourcesを使用します。
Route::apiResources([
'tasks' => 'Api\TaskController',
'users' => 'Api\UserController'
]);api用のデータ整形、リレーションデータの追加。
https://yuhodev.hatenablog.com/entry/2019/11/27/121500
apiCollectionの作成
php artisan make:resource UserCollection php artisan make:resource UserJsonResouseに追加したい
public function toArray($request) { $data = parent::toArray($request); $data["staff"] = StaffResource::collection($this->staff); $data["doctor"] = DoctorResource::collection($this->doctor); return $data; }apiのセキュリティ 自分のデータ以外は編集できてはいけない
Policyの設定を行う。
https://nakka-k.hatenablog.com/entry/2019/06/07/140758
$this->authorize('update', $user);APIで返却するJSONを共通フォーマットにしたい
https://waterfalls.hatenablog.com/entry/2019/08/24/012913
Modelでバリデーションをする
https://qiita.com/kd9951/items/c06d107aa4018295aa25
中間テーブルを通した多対多リレーション
https://php-junkie.net/framework/laravel/many_to_many/
Tips: primarykeyを使わない場合
https://www.yuulinux.tokyo/15552/#i-5多対多リレーション時のデータ修正・追加
例えばusers-> user_role -> roles というふうに
中間テーブルを経由してroleを管理している場合、roleを変更したい場合はroleテーブルのidを配列で渡すだけで良い
roles = [1,2,3]$user->roles()->sync($request->roles);神か!!!
https://nextat.co.jp/staff/archives/200
この辺から自力で調べつつ、公式リファレンスを読めば大体構築イメージがつかめるようになってきました。
概ね3日でLaravelの基本は理解できたと言えます。
素晴らしいフレームワークですが、レイヤーも多いため、基本のSQLの知識も必要、PHPの基礎も。やっぱ基礎って大事だな、と思いました。
- 投稿日:2020-07-29T17:38:02+09:00
What's the Laravel?? "Laravelについて簡単に説明"
Hi, tehere!
プログラミング歴3ヶ月のMackeyがLaravelとは何か、
備忘録もかねてLaravel初心者目線で説明いたします!1. Laravelとは?
"Laravel"とはphpのフレームワークのことです。
イメージとしては、「骨組み」、「枠組み」、「構造」と捉えて頂けたらと思います。
このフレームワークを利用することにより、目的のアプリケーションなどをゼロから開発する必要がなくなります。クラスやメソッドなどが多く用意されているため、開発工程を大幅に短縮できるのです!2. Laravelでできることは?
Google Chrome, Internet Explorer, Safariなど、インターネットを介して情報を見たり入力したりするシステムなら、ほとんど作成可能だと思います。
また、多機能なフレームワークが揃っているのでWebアプリケーション全般に向いていると言えるのではないでしょうか。
※因み筆者はLaravelフレームワークを利用して、掲示板を作成しています。3. MVCモデル
Laravelでは「MVCモデル」というものを採用しています。
処理をModel(データ処理)、View(画面表示)、Controller(全体の制御)の各機能に分けて、パーツ(機能)ごとに開発を行っていくものです。
※簡易的ではありますが、機能ごとの動きを図にしてみたので参考までに。
4. パッケージ管理
パッケージ管理に関してはComposerを使います。
Composer(パッケージ管理)とは、開発をする際に必要となるライブラリやパッケージを管理・インストールするものです。コマンド1つで必要なものが全て揃うものです。5. Eloquent ORM と Migration
Webアプリケーションの開発ではデータベースの操作が必然的に付き物です。
データベースで保存したデータを取得して表示したり、データを更新して常に新しい状態を保たせる操作があります。
Eloquent ORMとは、データベースとモデルにリレーションを持たせて、データを柔軟に扱えるようにする機能です。
Migrationは、テーブル定義の仕組みを持っており、テーブル定義に対する変更内容が書かれるファイルが生成されることでデータベースの変更や管理が簡単にできます。Modelを作成する際にmigrationを使います。6. 終わり
Laravelに関する説明を簡単にしてみました。
近日中に”実装の流れ”についても初心者目線で簡単に説明できたらと思います!!
拝読ありがとうございました:)Bye!
- 投稿日:2020-07-29T17:38:02+09:00
What is Laravel?"Laravelについて簡単に説明"
Hi, tehere!
プログラミング歴3ヶ月のMackeyがLaravelとは何か、
備忘録もかねてLaravel初心者目線で説明いたします!1. Laravelとは?
"Laravel"とはphpのフレームワークのことです。
イメージとしては、「骨組み」、「枠組み」、「構造」と捉えて頂けたらと思います。
このフレームワークを利用することにより、目的のアプリケーションなどをゼロから開発する必要がなくなります。クラスやメソッドなどが多く用意されているため、開発工程を大幅に短縮できるのです!2. Laravelでできることは?
Google Chrome, Internet Explorer, Safariなど、インターネットを介して情報を見たり入力したりするシステムなら、ほとんど作成可能だと思います。
また、多機能なフレームワークが揃っているのでWebアプリケーション全般に向いていると言えるのではないでしょうか。
※因み筆者はLaravelフレームワークを利用して、掲示板を作成しています。3. MVCモデル
Laravelでは「MVCモデル」というものを採用しています。
処理をModel(データ処理)、View(画面表示)、Controller(全体の制御)の各機能に分けて、パーツ(機能)ごとに開発を行っていくものです。
※簡易的ではありますが、機能ごとの動きを図にしてみたので参考までに。
4. パッケージ管理
パッケージ管理に関してはComposerを使います。
Composer(パッケージ管理)とは、開発をする際に必要となるライブラリやパッケージを管理・インストールするものです。コマンド1つで必要なものが全て揃うものです。5. Eloquent ORM と Migration
Webアプリケーションの開発ではデータベースの操作が必然的に付き物です。
データベースで保存したデータを取得して表示したり、データを更新して常に新しい状態を保たせる操作があります。
Eloquent ORMとは、データベースとモデルにリレーションを持たせて、データを柔軟に扱えるようにする機能です。
Migrationは、テーブル定義の仕組みを持っており、テーブル定義に対する変更内容が書かれるファイルが生成されることでデータベースの変更や管理が簡単にできます。Modelを作成する際にmigrationを使います。6. 終わり
Laravelに関する説明を簡単にしてみました。
近日中に”実装の流れ”についても初心者目線で簡単に説明できたらと思います!!
拝読ありがとうございました:)Bye!
- 投稿日:2020-07-29T15:07:50+09:00
【Laravel】モデルから配列やJsonにキャスト時、必要な属性だけ表示させる
- 投稿日:2020-07-29T14:56:18+09:00
bladeでDBを扱う
- 投稿日:2020-07-29T12:24:56+09:00
Laradock にログイン機能(laravel/ui)を導入する
概要
以下のような方を対象としています。
- Laradock をすでに導入済
- Laravel 6 のプロジェクトを作成済
- ユーザーログイン機能を導入したい
自身のアウトプット兼メモ用で作成しました。
導入方法
はじめに、laradock ディレクトリに移動します。
その後、以下の流れで入力していきます。1. ワークスペースに入る
docker-compose exec workspace bash2. laravel / ui のインストール
composer require laravel/ui:^1.0 --dev3. ログイン・ユーザー登録機能の作成
今回はBootstrapを用いた形にします。
php artisan ui bootstrap --auth4. パッケージのインストール
npm install5. インストールパッケージのビルド
npm run dev6. ワークスペースから出る
exit参考
- 投稿日:2020-07-29T12:04:01+09:00
Debugbar をインストール
Debugbarを使う。
まずは、Debugbarをインストールします。
$ composer require --dev barryvdh/laravel-debugbar次にDebugbarの設定ファイルを作成します。
$ php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"ここで作成された環境設定ファイル「.env」に、設定情報を記載します。
以下のいずれかを追記する。
DEBUGBAR_ENABLED=null # デフォルト。APP_DEBUGに応じて決まる DEBUGBAR_ENABLED=true # 必ず有効 DEBUGBAR_ENABLED=false # 必ず無効これでデバッグを行う準備ができました。
デバッグしたい場所に次のコードを記述すればデバッグすることができます。\Debugbar::info(確認したい変数など);これでOKです!
- 投稿日:2020-07-29T09:15:13+09:00
Laravel クエリビルダを用いてNULLを判定する
目的
- クエリビルダを用いたNULLの判定方法をまとめる
実施環境
- ハードウェア環境
項目 情報 OS macOS Catalina(10.15.5) ハードウェア MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) プロセッサ 2 GHz クアッドコアIntel Core i5 メモリ 32 GB 3733 MHz LPDDR4 グラフィックス Intel Iris Plus Graphics 1536 MB
- ソフトウェア環境
項目 情報 備考 PHP バージョン 7.4.3 Homwbrewを用いて導入 Laravel バージョン 7.0.8 commposerを用いてこちらの方法で導入→Mac Laravelの環境構築を行う MySQLバージョン 8.0.19 for osx10.13 on x86_64 Homwbrewを用いてこちらの方法で導入→Mac HomebrewでMySQLをインストールする 前提環境
- 先に記載した実施環境に近い環境で実施すること。
前提情報
- 下記の内容をすでに実施していると理解が早いかもしれない。
読後感
- NULLを用いた条件を使ってクエリビルダでデータの取得をすることができる様になる。
例
判定対象カラムがNULLであるレコードのみ取得する。
$query = モデルファイル名::select('*'); $query->whereNull('判定対象カラム名'); $query->get();判定対象カラムがNULLではないレコードのみ取得する。
$query = モデルファイル名::select('*'); $query->whereNotNull('判定対象カラム名'); $query->get();具体例
- usersテーブルの「user_name」カラムがNULLのレコードのみ取得する際は下記の様になる。
usersテーブルのモデルファイル名はUser.phpとして、
アプリ名ディレクトリ/app
直下に存在するものとする。当該モデルファイルのuse宣言はすでに実施されている物とする。$query = User::select('*'); $query->whereNull('user_name'); $query->get();usersテーブルの「user_name」カラムがNULLではないレコードのみ取得する際は下記の様になる。
usersテーブルのモデルファイル名はUser.phpとして、
アプリ名ディレクトリ/app
直下に存在するものとする。当該モデルファイルのuse宣言はすでに実施されている物とする。$query = User::select('*'); $query->whereNotNull('user_name'); $query->get();参考文献
- 投稿日:2020-07-29T00:08:11+09:00
composer"Updating dependencies (including require-dev)"で固まり困っている人へ
//駄文を許してください
//筆者はcomposerコマンドを使ってプロジェクトを作成していますmac ver 10.15.6
composer ver 1.10.9ことの発端は...
とある日,laravelを楽しもうとプロジェクトを作成した時であった...
何分待ってもprojectが作成されないのである。
Creating a "laravel/laravel" project at "----" <-ここで固まる
updating dependencies <-composer updateしていた時はここで
行動
phpやnodeなど手当たりしだいにアップデート->効果なし
composerのコマンドを打ったときの挙動だけがおかしいことに気づく
composerのアンインストールを考えたができなかった...
解決への道
参考
https://iiiso.ti-da.net/e8647248.html
https://stackoverflow.com/questions/17138319/composer-freezing-when-installing-symfony-vendors
https://github.com/composer/composer/issues/4839公開鍵
言われた通りに、diagnoseをコマンドの尻に付けてみる
->どうやら同じような症状である.composer self-update --update-keys
を打ち,公開鍵をコピペしてみる.
その後、composerコマンドが通常通りに使えるようになった.
実際のところなぜこのような問題が起こったのか不明であり本質的には何が起こったのか不明であるため原因究明に力を注ぐ。細かなこと
- 初めて記事を制作したので細かなミスがあっても許してください
- 解決?後再度プロジェクトを作成してみると、ターミナル上では余り変化がないので10分程度待ってみましょう.