@mar-gitacount (mar mar)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Class "App\Models\Book" not found について

今ララベルのudemyで学習をしているのですが、
php artisan serveして、ララベルのトップページに接続した際、not foundとなってしまいます。
文字通りそんなファイルは存在しないという意味なのはわかりますが、ファイルを確認したところあったのでなぜ読み込んでくれないのかわかりません、、

votingテーブルを作りそのあとに紐づけるためのVotingモデルをartisanコマンドで生成したのでそれをトップページに表示したいと思いました。

コマンドプロンプト
php artisan make:model Voting

通常ララベルのページはroutes/web.phpに接続しにいった際、resources内のwelcome.blade.phpがデフォルトで表示されると思うのですが、
それを自身が作った、books.blade.phpにしたいと思い、コードを書き換えました。

デフォルトのweb.php

web.php
<?php

use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
/* /(root)はサイトの一番上の階層を示す それを読んだ時に呼び出させる関数*/
Route::get('/', function () {

    return view('welcome');
});


書き換えたweb.php

web.php
<?php

use Illuminate\Support\Facades\Route;
use APP\Models\Voting;
use Illuminate\Http\Request;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    $votings = Voting::all();
    return view('votings', ['votings' => $votings] ); 
});


use APP\Models\Voting;を指定して
RouteのところでVotingモデルを$votingの変数に格納してから
view で表示させるように書いたのですが、、

スクリーンショット 2020-12-15 050957.png

スクリーンショット 2020-12-15 051720.png

0 likes

2Answer

Voting.phpのnamespaceを確認してください。
make:modelコマンドは確かappディレクトリにmodelが作成され、それをModelsディレクトリに移動させたと考えるとnamespaceAppのままになってるのではないかと推測します。

Laravelの名前空間Appはディレクトリ構成と一致している必要があります。

PSR-4: Autoloader
laravel composer.json#L37

1Like

Voting.php の中身を見ないと正確には分かりませんが、 web.php の use APP\Models\Voting;use App\Models\Voting; にしたらどうでしょうか(APPApp に)。

0Like

Your answer might help someone💌