質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1280閲覧

Class "〇〇" not foundみついて

kazummm

総合スコア3

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

3クリップ

投稿2021/10/24 10:42

編集2021/10/24 12:34

イメージ説明### 前提・実現したいこと

初学者です。laravelでアプリを作っています。
以下のことで困っております。
どなたか、ご教授いただければと思い、投稿させていただきました。
どうぞよろしくお願いいたします。

発生している問題・エラーメッセージ

Class "App\Shop" not found

該当のソースコード

PHP

1ShopController.php 2<?php 3 4namespace App\Http\Controllers; 5 6use App\Shop; 7use Illuminate\Http\Request; 8 9class ShopController extends Controller 10{ 11 /** 12 * Display a listing of the resource. 13 * 14 * @return \Illuminate\Http\Response 15 */ 16 public function index() 17 { //shopモデルのデータを全て取り出して、indexビューに送る 18 $shops = Shop::all(); 19 return view('index', ['shops' => $shops]); 20 } 21 22 /** 23 * Show the form for creating a new resource. 24 * 25 * @return \Illuminate\Http\Response 26 */ 27 public function create() 28 { 29 // 30 } 31 32 /** 33 * Store a newly created resource in storage. 34 * 35 * @param \Illuminate\Http\Request $request 36 * @return \Illuminate\Http\Response 37 */ 38 public function store(Request $request) 39 { 40 // 41 } 42 43 /** 44 * Display the specified resource. 45 * 46 * @param \App\Models\Shop $shop 47 * @return \Illuminate\Http\Response 48 */ 49 public function show(Shop $shop) 50 { 51 // 52 } 53 54 /** 55 * Show the form for editing the specified resource. 56 * 57 * @param \App\Models\Shop $shop 58 * @return \Illuminate\Http\Response 59 */ 60 public function edit(Shop $shop) 61 { 62 // 63 } 64 65 /** 66 * Update the specified resource in storage. 67 * 68 * @param \Illuminate\Http\Request $request 69 * @param \App\Models\Shop $shop 70 * @return \Illuminate\Http\Response 71 */ 72 public function update(Request $request, Shop $shop) 73 { 74 // 75 } 76 77 /** 78 * Remove the specified resource from storage. 79 * 80 * @param \App\Models\Shop $shop 81 * @return \Illuminate\Http\Response 82 */ 83 public function destroy(Shop $shop) 84 { 85 // 86 } 87} 88

PHP

1web.php 2<?php 3 4//ドメイン名に続けてshopsの場合shopControllerのindexメソッドを呼び出す 5Route::get('/shops', 'App\Http\Controllers\ShopController@index')->name('shop.list'); 6 7Route::get('/', function () { 8 return redirect('/shops'); 9}); 10

PHP

1index.blade.php 2<!DOCTYPE html> 3<html lang="ja"> 4 5<head> 6 <meta charset="UTF-8"> 7 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 <title>Bestラーメン</title> 10 <style> 11 body { 12 padding: 10px 13 } 14 15 ; 16 </style> 17</head> 18 19<body> 20 <h1>お店一覧</h1> 21 22 @foreach ($shops as $shop) 23 <p> 24 {{ $shop->category->name }}, 25 {{ $shop->name}}, 26 {{$shop->addres}} 27 </p> 28 @endforeach 29</body> 30 31</html>

PHP

1Shop.php 2<?php 3 4namespace App; 5 6use Illuminate\Database\Eloquent\Model; 7 8class Shop extends Model 9{ //shopモデルとcategoryモデルの関連付 10 public function category() 11 { //belongToは所属する 12 return $this->belongsTo('App\Category'); 13 } 14} 15

PHP

1"autoload": { 2 "psr-4": { 3 "App\": "app/", 4 "Database\Factories\": "database/factories/", 5 "Database\Seeders\": "database/seeders/" 6 } 7 }, 8 "autoload-dev": { 9 "psr-4": { 10 "Tests\": "tests/" 11 } 12 },

試したこと

Appフォルダの中に指定されたファイルがあるのにかかわらずnot foundが出てしまいます。composer dump-autoloadでプロジェクト内のクラスを再生成しましたが解消できませんでした

補足情報(FW/ツールのバージョンなど)

PHP 8.0.3
Laravel Framework 8.67.0

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

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

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

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

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

cocoeyes02

2021/10/24 12:14

名前空間(namespace)の設定に誤りがある可能性があります。 composer.jsonのpsr-4の欄を追加してもらうことは可能ですか?
kazummm

2021/10/24 12:19

composer.jsonのpsr-4の欄追加致しました。
cocoeyes02

2021/10/24 12:30

shop.phpを置いているディレクトリの名前は、appではなくAppですか? もしAppだった場合は、appに名前を変更したらエラーは解消しますか?
kazummm

2021/10/24 12:35

確認したところShop.phpが置いてあるディレクトリ名はappでした。 ディレクトリ構成もアップロードしました。
cocoeyes02

2021/10/24 13:00

shop.phpのnamespaceをApp -> App\ Models ShopController.phpのuse App\Shopをuse App\Models\Shop;に変えたら動きませんか?
guest

回答1

0

ベストアンサー

以下より、Shop.phpのnamespaceの設定をnamespace App/Models;と変えると動く可能性が高いと思われます。

  • Shop.phpが置いてあるディレクトリのパスはapp/Models
  • 名前空間(psr-4)の設定から、app/->App/と扱う

例えばShopController.phpは、app/Http/Controllers直下に置かれているため、namespaceは App\Http\Controllers\ShopControllerとなっています。

ファイルが存在するのにClass "〇〇" not foundという旨のエラーが出た時は、名前空間(psr-4)の設定と実際のディレクトリの配置、namespaceの指定が上手くいっていない可能性が高いので参考にして見てください。

投稿2021/10/24 13:30

編集2021/10/24 13:32
cocoeyes02

総合スコア29

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

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

kazummm

2021/10/24 21:53

ありがとうございます。名前空間について詳しく知ることができました。 しかしnamespace App/Models;と変更してみたのですが、同じエラーが出てしまいます。
cocoeyes02

2021/10/24 22:53 編集

同じエラーが出てくるのは妙ですね...他にもApp\Shopやuse App\Shop;と指定しているところはありますか? あれば同じように修正してみてください。 また、composer auto-dumploadも実行してみてください。
kazummm

2021/10/28 05:34

返信遅れてしまい大変申し訳ございません。 useの指定場所を修正したのですが変わらずエラーが起きてしまいました。 composer auto-dumploadも実行しましたが結果は変わらずでした。 解決することができませんでしたが、名前空間の設定やnamespaceについて再確認できるいい機会になりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問