laravel-8 - BadMethodCallException 调用未定义的方法 App\Models\BatterFirst::index()
问题描述
我想添加一些数据,但是我的模型 BatterFirst.php 所在的位置出现 BadMethodCallException Call to undefined method App\Models\BatterFirst::index() 错误
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class BatterFirst extends Model
{
use HasFactory;
protected $fillable = [
'name', 'runs', 'balls', 'sixs', 'fours'
];
}
这是我的控制器 BatterFirstController.php
<?php
namespace App\Http\Controllers;
use App\Models\BatterFirst;
use Illuminate\Http\Request;
class BatterFirstController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$data = BatterFirst::latest()->paginate(5);
return view('BatterFirst.index',compact('data'))
->with('i', (request()->input('page', 1) - 1) * 5);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('BatterFirst.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'runs' => 'required',
'balls' => 'required',
'sixs' => 'required',
'fours' => 'required',
]);
BatterFirst::create($request->all());
return redirect()->route('BatterFirst.index')
->with('success','Batter created successfully.');
}
/**
* Display the specified resource.
*
* @param \App\Models\BatterFirst $batterFirst
* @return \Illuminate\Http\Response
*/
public function show(BatterFirst $batterFirst)
{
return view('BatterFirst.show',compact('BatterFirst'));
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\BatterFirst $batterFirst
* @return \Illuminate\Http\Response
*/
public function edit(BatterFirst $batterFirst)
{
return view('BatterFirst.edit',compact('BatterFirst'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\BatterFirst $batterFirst
* @return \Illuminate\Http\Response
*/
public function update(Request $request, BatterFirst $batterFirst)
{
$request->validate([
'name' => 'required',
'runs' => 'required',
'balls' => 'required',
'sixs' => 'required',
'fours' => 'required',
]);
$batterFirst->update($request->all());
return redirect()->route('BatterFirst.index')
->with('success','Batter updated successfully');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\BatterFirst $batterFirst
* @return \Illuminate\Http\Response
*/
public function destroy(BatterFirst $batterFirst)
{
$batterFirst->delete();
return redirect()->route('BatterFirst.index')
->with('success','Batter deleted successfully');
}
}
这是我的 web.php
<?php
use App\Models\BatterFirst;
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!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::resource('BatterFirst', BatterFirst::class);
这是我的 BatterFrist/index.php
@extends('BatterFirst.layout')
@section('content')
<div class="row" style="margin-top: 5rem;">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2>Laravel 8 CRUD Example from scratch - laravelcode.com</h2>
</div>
<div class="pull-right">
<a class="btn btn-success" href="{{ route('BatterFirst.create') }}"> Create New Post</a>
</div>
</div>
</div>
@if ($message = Session::get('success'))
<div class="alert alert-success">
<p>{{ $message }}</p>
</div>
@endif
<table class="table table-bordered">
<tr>
<th>No</th>
<th>Name</th>
<th>Runs</th>
<th>Balls</th>
<th>Sixs</th>
<th>Fours</th>
<th>Strick Rate</th>
</tr>
@foreach ($data as $key => $value)
<tr>
<td>{{ ++$i }}</td>
<td>{{ $value->name }}</td>
<td>{{ $value->runs }}</td>
<td>{{ $value->overs }}</td>
<td>{{ $value->balls }}</td>
<td>{{ $value->sixs }}</td>
<td>{{ $value->fours }}</td>
{{-- <td>{{ $value->runs/$value->balls*100 }}</td> --}}
<td>@if ($value->runs > 0 and $value->runs ==0)
{{ $value->runs*100 }}
@elseif ($value->balls>0 and $value->runs ==0)
{{ $value->balls*$value->runs }}
@elseif ($value->balls==0 and $value->runs ==0)
{{ $value->balls * $value->runs }}
@elseif ($value->runs>0 and $value->balls>=0)
{{ $value->runs/$value->balls*100 }}
@endif
</td>
<td>
<form action="{{ route('BatterFirst.destroy',$value->id) }}" method="POST">
<a class="btn btn-info" href="{{ route('BatterFirst.show',$value->id) }}">Show</a>
<a class="btn btn-primary" href="{{ route('BatterFirst.edit',$value->id) }}">Edit</a>
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger">Delete</button>
</form>
</td>
</tr>
@endforeach
</table>
{!! $data->links() !!}
@endsection
这里有什么问题?谢谢你帮助我。如果您需要更详细的代码,请询问我,我会更新它。注意:我只是 laravel 的初学者
解决方案
让我们调试您的代码,从请求进入应用程序的位置开始 - 在路由文件中:
Route::resource('BatterFirst', BatterFirst::class);
您有一条resource()
由 处理的路线BatterFirst::class
。但是那个班级在哪里?它必须映射到某些东西,如果您查看同一路由文件的顶部,我们会看到:
use App\Models\BatterFirst;
因此,请求yoursite.com/BatterFirst/
将由模型index()
中的方法处理BatterFirst
。但是当然没有这样的方法。
退后一步,很明显您希望Controller处理您的路由,而不是您的Model。删除use
路由文件顶部的那一行,并将其替换为:
use App\Http\Controllers\BatterFirstController;
并更新要由该控制器处理的路由:
Route::resource('BatterFirst', BatterFirstController::class);
推荐阅读
- javascript - 角度如何使用查询列表对象?
- java - 在控制台中使用在 Eclipse 中创建的包运行代码
- javascript - 如何获得此加载屏幕效果
- java - 如何实现一种以异步方式处理服务超时的方法?
- runtime - 如何在运行时设置 Phaser 3 游戏的背景颜色?
- dependency-injection - 无法解析类型 Microsoft 扩展配置 IConfiguration 的服务
- java - 代码仅在一种情况下不断跳过一行的输入
- javascript - points.dist = function () { ^ ReferenceError: 点未定义
- java - 在 Android Google Map API 中的 onMayReady() 处获取初始坐标
- lua - 返回数组的Computercraft函数,使用第一个元素作为布尔值