BadMethodCallException 调用未定义的方法 App\Models\BatterFirst::index()
BadMethodCallException Call to undefined method App\Models\BatterFirst::index()
我想添加一些数据,但我得到了
BadMethodCallException异常
调用未定义的方法 App\Models\BatterFirst::index()
错误
我的模型 BatterFirst.php 在哪里
<?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
的初学者
您必须使用 web.php 中的控制器,而不是模型
use App\Http\Controllers\BatterFirstController;
Route::resource('BatterFirst', [BatterFirstController::class]);
现在您可以从任何地方打电话,例如
在 example.blade.php 文件中
<a href={{'BatterFirst.index'}}>Index<a/>
让我们调试您的代码,从请求进入应用程序的地方开始 - 在路由文件中:
Route::resource('BatterFirst', BatterFirst::class);
您有一条 resource()
路线由 BatterFirst::class
处理。但是 class 在哪里?它必须映射到某个东西,如果您查看同一路由文件的顶部,我们会看到:
use App\Models\BatterFirst;
因此 yoursite.com/BatterFirst/
的请求将由 BatterFirst
模型中的 index()
方法处理。但是当然没有这样的方法。
退后一步,很明显您希望 Controller 来处理您的路由,而不是您的 Model。删除路由文件顶部的 use
行,并将其替换为:
use App\Http\Controllers\BatterFirstController;
并更新要由该控制器处理的路由:
Route::resource('BatterFirst', BatterFirstController::class);
我想添加一些数据,但我得到了 BadMethodCallException异常 调用未定义的方法 App\Models\BatterFirst::index() 错误 我的模型 BatterFirst.php 在哪里
<?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
的初学者您必须使用 web.php 中的控制器,而不是模型
use App\Http\Controllers\BatterFirstController;
Route::resource('BatterFirst', [BatterFirstController::class]);
现在您可以从任何地方打电话,例如 在 example.blade.php 文件中
<a href={{'BatterFirst.index'}}>Index<a/>
让我们调试您的代码,从请求进入应用程序的地方开始 - 在路由文件中:
Route::resource('BatterFirst', BatterFirst::class);
您有一条 resource()
路线由 BatterFirst::class
处理。但是 class 在哪里?它必须映射到某个东西,如果您查看同一路由文件的顶部,我们会看到:
use App\Models\BatterFirst;
因此 yoursite.com/BatterFirst/
的请求将由 BatterFirst
模型中的 index()
方法处理。但是当然没有这样的方法。
退后一步,很明显您希望 Controller 来处理您的路由,而不是您的 Model。删除路由文件顶部的 use
行,并将其替换为:
use App\Http\Controllers\BatterFirstController;
并更新要由该控制器处理的路由:
Route::resource('BatterFirst', BatterFirstController::class);