這是我在 stackoverflow 上的第一篇文章。幾個月前我用 Laravel 創建了我的第一個專案,它包含一些模型、控制器、觀察者等,但我堅持使用最后一個,它的創建方式與以前的相同(我猜......) ,我找不到我這次錯過的東西。創建記錄作業正常,但不幸的是編輯或顯示沒有:函式 edit(ExpenseCourse $expenseCourse) 應該顯示在 URL http://.......expensecourses/1/edit 中索引有 1 條記錄的陣列,但它顯示空陣列。表expense_courses 不為空,它包含一個先前創建的id = 1 的記錄,show 方法也是如此。
這是我的 ExpenseCourseController.php
<?php
namespace App\Http\Controllers;
use App\Models\ExpenseCourse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Auth;
class ExpenseCourseController extends Controller
{
public function edit(ExpenseCourse $expenseCourse)
{
dd($expenseCourse);
$depts = DB::table('depts')
->where('company_id','=',1)
->orderby('dept_shortname')
->get();
return view('expensecourses.edit',compact('expenseCourse'), [
'depts' => $depts,
]);
}
}
這是我的 ExpenseCourse.php 模型:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class ExpenseCourse extends Model
{
use HasFactory;
protected $fillable = [
'dept_id', 'name', 'company_name', 'year', 'hours_count', 'estimated_participants_number', 'estimated_price', 'real_price', 'status_id', 'planned'
];
}
這是我的遷移 2021_12_17_140931_create_expense_courses_table.php 檔案。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateExpenseCoursesTable extends Migration
{
public function up()
{
Schema::create('expense_courses', function (Blueprint $table) {
$table->id();
$table->integer('dept_id');
$table->string('name');
$table->string('company_name');
$table->year('year');
$table->integer('hours_count');
$table->integer('estimated_participants_number');
$table->integer('estimated_price');
$table->integer('real_price')->nullable();
$table->integer('status_id')->default(1);
$table->boolean('planned')->default(1);
$table->integer('created_by')->nullable();
$table->integer('updated_by')->nullable();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('expense_courses');
}
}
這是我的路由 web.php 檔案
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ParticipantController;
use App\Http\Controllers\CoursesTypesController;
use App\Http\Controllers\TrainerController;
use App\Http\Controllers\CourseController;
use App\Http\Controllers\ExpenseCourseController;
use App\Http\Controllers\CompanyController;
use App\Http\Controllers\DeptController;
use App\Http\Controllers\PositionsTypesController;
use App\Http\Controllers\PrintTemplatesController;
use App\Http\Controllers\ReportsController;
Route::get('/', function () {
return view('welcome2');
});
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::resource('participants', ParticipantController::class)->middleware('auth');
Route::resource('coursestypes', CoursesTypesController::class)->middleware('auth');
Route::resource('trainers', TrainerController::class)->middleware('auth');
Route::resource('courses', CourseController::class)->middleware('auth');
Route::resource('expensecourses', ExpenseCourseController::class)->middleware('auth');
Route::resource('companies', CompanyController::class)->middleware('auth');
Route::resource('depts', DeptController::class)->middleware('auth');
Route::resource('positionstypes', PositionsTypesController::class)->middleware('auth');
Route::get('participants/fill/{course_id}', [ParticipantController::class, 'fill'])->name('participants/fill')->middleware('auth');
Route::get('participants/create/{course_id}', [ParticipantController::class, 'create'])->middleware('auth');
Route::get('participants/edit/{participant_id}/{course_id}', [ParticipantController::class, 'edit'])->middleware('auth');
Route::get('search/results', [CourseController::class, 'results'])->middleware('auth');
Route::get('search/query', [CourseController::class, 'search'])->middleware('auth');
Route::get('companies/getdepts/{company_id}', [CompanyController::class, 'getdepts'])->name('companies/getdepts')->middleware('auth');
Route::get('prints/print/{participant_id}', [PrintTemplatesController::class, 'print'])->name('prints/print')->middleware('auth');
Route::get('reports/quantity', [ReportsController::class, 'quantity_report'])->middleware('auth'); // raport ilo?ciowy
Route::get('reports/annual', [ReportsController::class, 'annual_report'])->middleware('auth'); // raport roczny
URL::forceScheme('https');
如果你能幫助我,我將不勝感激。謝謝。
uj5u.com熱心網友回復:
這是因為變數和常量在 php 中區分大小寫,并且在您的情況下,名稱Route::resource與控制器類的方法中的引數名稱不匹配。您可以在edit和show方法中更改您的路線名稱或引數。
1. 更改路線名稱:
在路由名稱中使用駝峰命名,更改expensecourses為expenseCourses
Route::resource('expenseCourses', ExpenseCourseController::class)->middleware('auth');
或者
2. 更改引數名稱
public function edit(ExpenseCourse $expensecourse){}
public function show(ExpenseCourse $expensecourse){}
uj5u.com熱心網友回復:
當然,你是絕對正確的!我的錯。我在前一個有一個單詞名稱的控制器的基礎上創建了這個控制器,所以我完全錯過了字母問題。非常感謝你的幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386357.html
