🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

7405閲覧

laravelが難しくてうまくいきません

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/10/18 04:21

編集2017/10/18 05:04

laravelが難しくてうまくいきません

\Desktop\images\gulp-folder\website\php\project1>php artisan migrate [Symfony\Component\Debug\Exception\FatalThrowableError] Class 'App\Providers\Schema' not found

となってしまいます。
前は動いてくれてlaravelという画面が出てきました。


tree /F
フォルダー パスの一覧

C:. │ .env │ .env.example │ .gitattributes │ .gitignore │ artisan │ composer.json │ composer.lock │ package.json │ phpunit.xml │ server.php │ webpack.mix.js │ yarn.lock │ ├─app │ │ User.php │ │ │ ├─Console │ │ Kernel.php │ │ │ ├─Exceptions │ │ Handler.php │ │ │ ├─Http │ │ │ Kernel.php │ │ │ │ │ ├─Controllers │ │ │ │ Controller.php │ │ │ │ │ │ │ └─Auth │ │ │ ForgotPasswordController.php │ │ │ LoginController.php │ │ │ RegisterController.php │ │ │ ResetPasswordController.php │ │ │ │ │ └─Middleware │ │ EncryptCookies.php │ │ RedirectIfAuthenticated.php │ │ TrimStrings.php │ │ TrustProxies.php │ │ VerifyCsrfToken.php │ │ │ └─Providers │ AppServiceProvider.php │ AuthServiceProvider.php │ BroadcastServiceProvider.php │ EventServiceProvider.php │ RouteServiceProvider.php │ ├─bootstrap │ │ app.php │ │ │ └─cache │ .gitignore │ packages.php │ services.php │ ├─config │ app.php │ auth.php │ broadcasting.php │ cache.php │ database.php │ filesystems.php │ mail.php │ queue.php │ services.php │ session.php │ view.php │ ├─database │ │ .gitignore │ │ │ ├─factories │ │ UserFactory.php │ │ │ ├─migrations │ │ 2014_10_12_000000_create_users_table.php │ │ 2014_10_12_100000_create_password_resets_table.php │ │ │ └─seeds │ DatabaseSeeder.php │ ├─public │ │ .htaccess │ │ favicon.ico │ │ index.php │ │ robots.txt │ │ │ ├─css │ │ app.css │ │ │ └─js │ app.js │ ├─resources │ ├─assets │ │ ├─js │ │ │ │ app.js │ │ │ │ bootstrap.js │ │ │ │ │ │ │ └─components │ │ │ Example.vue │ │ │ │ │ └─sass │ │ app.scss │ │ _variables.scss │ │ │ ├─lang │ │ └─en │ │ auth.php │ │ pagination.php │ │ passwords.php │ │ validation.php │ │ │ └─views │

本当に初心者にもわかるようにかみ砕いた説明をしてくれるサイトが見当たらなく
http://libro.tuyano.com/index2?id=3766003
を参考に行っているのですが、こちらはディレクトリ構成が大幅に変わってしまった5.3移行の情報と考えてよさそうでしょうか?

できればわかりやすく5.6でも問題なく使える所があるとありがたいです。

参考先を翻訳すると下記のように出てきたので、つまりAppServiceProvider.phpにuse Illuminate\Support\Facades\Schema;を加える必要があるという事でしょうか?
英語なのでよくわかりません。

>>>
AppServiceProvider.phpでは、必要なuseステートメントをファイルの先頭に含めませんでした。

use Illuminate\Support\Facades\Schema;

これは、 Schema::defaultStringLength(191);単純に呼び出すことができるように、Schemaクラスへの名前空間パスを定義しますSchema::defaultStringLength(191); ブート方法で。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaya_ohashi

2017/10/18 04:29

前は動いていたという前の環境と、今の環境で何を変えたかを明記してください。例えば、composer.jsonのLaravelのバージョンを書き換えたとか。
natady

2017/10/18 05:37

名前空間が理解できると今後同じような問題が発生した際に対処できるようになると思いますので、こちらをご一読しておくことをおすすめします。http://php.net/manual/ja/language.namespaces.php
退会済みユーザー

退会済みユーザー

2017/10/18 07:41

「名前をかぶらせない仕組み」のようですね。Class 'App\Providers\Schema'という名前のクラス名が被っているのが原因という事ですか?そんなクラスを作った記憶はないのですが
natady

2017/10/18 08:41 編集

該当ファイル内に記述しているSchemaクラスは現在`App\Providers\Schema`を差しています。`App\Providers`は該当ファイルの名前空間です。ですが、`App\Providers\Schema`というクラスはありませんのでエラーが発生しています。Laravelは`Illuminate\Support\Facades\Schema`というクラスを用意しています。これを使うためにはファイルの先頭に`use Illuminate\Support\Facades\Schema;`と記述するか、`Illuminate\Support\Facades\Schema::someMethod()`のように完全修飾名を使う必要があります。
guest

回答2

0

エラーに関しては、masaya_ohashさんの内容で解決できるかと思いますが、最近ドットインストールのLaravel入門がLaravel5.5にアップデートしたようなので、プレミアムプランですが一度通してやってみると取っ掛かりとしては理解が深まるかと思います。
Laravel 5.5入門 (全31回)
クラスが見つからないエラーに関しては、composerのautoload機能等の理解も重要です。
Laravelで学ぶcomposer

投稿2017/10/18 06:07

aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/18 06:46

参考先を翻訳すると下記のように出てきたので、つまりAppServiceProvider.phpにuse Illuminate\Support\Facades\Schema;を加える必要があるという事でしょうか? 英語なのでよくわかりません。 >>> AppServiceProvider.phpでは、必要なuseステートメントをファイルの先頭に含めませんでした。 use Illuminate\Support\Facades\Schema; これは、 Schema::defaultStringLength(191);単純に呼び出すことができるように、Schemaクラスへの名前空間パスを定義しますSchema::defaultStringLength(191); ブート方法で。 こちらの作業で問題ないという事でしょうか?
aro10

2017/10/18 06:57

多分そうだと思うので、masaya_ohashさんに聞いてみてください。
guest

0

ベストアンサー

おそらくほぼ同様の症状かと思います。
http://munyagu.com/1362/

Class 'App\Providers\Schema' not foundで検索すればすぐ見つかりました。エラーで困ったときは、まず誰かに聞く前に自分でも少し調査しましょう。

追記

参考先を翻訳すると下記のように出てきたので、つまりAppServiceProvider.phpにuse Illuminate\Support\Facades\Schema;を加える必要があるという事でしょうか?

英語なのでよくわかりません。

試してみればすぐわかることではないですか?もし上記参考と同じ現象であればそれで解決するでしょう。解決しなければ別の問題であるということです。

追記の追記

Class 'App\Providers\Schema' not foundというエラーが出る理由は、App\Providers\AppServiceProviderの中でSchema::defaultStringLength(191)という行があるからです。ここでSchemaというクラスのdefaultStringLengthというメソッドを呼び出そうとしています。
ここでとくに名前空間の指定が無いため、自分自身(AppServiceProvider)と同一の名前空間(App\Providers)にそのSchemaというクラスがあるはずとPHPがApp\Providers\Schemaというクラスを探そうとします。しかし、そんなクラスは存在しないためnot foundとなります。

ここで先程修正したコードで書いたuse Illuminate\Support\Facades\Schema;という行です。このコード(AppServiceProvider)でSchemaって言ったらIlluminate\Support\Facades\Schemaのことである、とPHPに伝える役目をしています。以降はSchemaという表記イコールIlluminate\Support\Facades\Schemaと解釈されるため、エラーがなくなったわけです。

投稿2017/10/18 04:31

編集2017/10/18 08:10
masaya_ohashi

総合スコア9210

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/18 07:53

確かに出来ました。ありがとうございました。 ただ理由がわかりません。 「名前をかぶらせない仕組み」のようですね。Class 'App\Providers\Schema'という名前のクラス名が被っているのが原因という事ですか?そんなクラスを作った記憶はないのですが
masaya_ohashi

2017/10/18 08:11

むしろ「そのApp\Providers\Schemaがないから」エラーになっているわけです。なぜその修正で直るのかは追記しました。
退会済みユーザー

退会済みユーザー

2017/10/18 08:15

ありがとうございます。 >>> Schema::defaultStringLength(191)という行があるからです。ここでSchemaというクラスのdefaultStringLengthというメソッドを呼び出そうとしています。
退会済みユーザー

退会済みユーザー

2017/10/18 08:16

>>> Schema::defaultStringLength(191)という行があるからです。ここでSchemaというクラスのdefaultStringLengthというメソッドを呼び出そうとしています。 この記述を自分で行って記憶が正直ないのですが、始めからあったという事でしょうか? それとも自分で過去に追記してしたという事でしょうか? はじめからなら、不備があったという事になりますね。無料なので文句は言いませんが
masaya_ohashi

2017/10/18 08:24

https://qiita.com/beer_geek/items/6e4264db142745ea666f このへんの内容に身に覚えは無いですか?最初からあったということはないはずです。このコードはMySQL特有の問題に対する対処なので、最初からLaravelにこの対処が入っていることはないです。おそらくこの対処をする際にSchema::defaultStringLength(191)を書くまではよかったものの、useを書き忘れていたのが原因ではないでしょうか。
退会済みユーザー

退会済みユーザー

2017/10/18 09:26

自分で記載してかつ use Illuminate\Support\Facades\Schema; を入れ忘れたという事ですね。 このようなことがありうるので、プロジェクトフォルダごとコピペしておいた方がよさそうですね。
masaya_ohashi

2017/10/19 04:28

フォルダごとコピペというのは確かにバックアップを取るという面においてよい判断かと思います。が、どうせなら少しステップアップしてはいかがでしょう。バージョン管理ツールと呼ばれるものの現在のトレンドとしてGitというツールがあります。これは「誰が」「どのとき」「どのソースのどの行」を修正したのかが記録されていくツールです。ここに入門用のサイトがありますので、一度御覧ください。 https://www.backlog.jp/git-guide/
退会済みユーザー

退会済みユーザー

2017/10/19 04:31

ありがとうございました。 プロジェクトをフォルダごとコピーすればバックアップはできるがgitを使うともっと最新のバックアップができるのですね
masaya_ohashi

2017/10/19 04:40

フォルダをまるごとコピーすると容量は倍々に増えていきますが、gitはテキストデータの「差分」だけを蓄積していくので容量も少なく済みます。履歴を追うことも容易いですし、誰かと一緒に作業するときに「同じファイルを編集して相手の修正を上書きしてしまう」という事故も防がれますので、個人でやっているうちからこういったバージョン管理ツールに慣れておくと幸せになれますよ。
退会済みユーザー

退会済みユーザー

2017/10/19 04:45

ありがとうございました。 そんなメリットもあるとは初めて知りました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問