【发布时间】:2019-12-02 18:54:32
【问题描述】:
我正在尝试在我的 show 方法中从我的表单中请求 $year,但它返回 null。我正在记录时间条目,我想按年查询时间,如下所示:$times = Time::where('user_id', $id)->whereYear('start_day', $request->year)->get();。此查询在我的 getReports 方法中有效,但不在我希望它工作的 show 方法中。如果我 dd($request->all()) 在我的 show 方法中它只返回一个空数组。我不确定如何解决这个问题,我相信这与我的路线 getReport 有关。有没有办法将这些值传递给 show 方法?我只需要 $request->year 就可以正常查询。
路线:
Route::resource('admin/reports', 'Admin\ReportController', [ 'as' => 'admin'])->middleware('admin');
Route::post('admin/reports/getReport', 'Admin\ReportController@getReport')->name('admin.getReport')->middleware('admin');
表单 POST:
<form method="POST" action="{{ route('admin.getReport') }}">
控制器:
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Http\Helper\ReportHelper;
use App\Time;
use App\User;
use App\Category;
use App\Offtime;
use Carbon\Carbon;
use Auth;
use Date;
use PDF;
use Session;
class ReportController extends Controller
{
public function create() {
$users = User::all();
$times = Time::all();
$years = array();
$length_times = count($times);
for($i=0;$i<$length_times;$i++){
$year = Carbon::parse($times[$i]->start_day)->format('Y');
array_push($years, $year);
}
$years = array_unique($years);
return view('admin.report.create', compact('users', 'years'));
}
public function show($id, Request $request) {
$user = User::find($id);
if (!$user) {
return false;
}
$times = Time::where('user_id', $id)->get();
return view ('admin.report.show', compact('user','times')
}
public function getReport(Request $request) {
$form_user = $request->form_user;
$year = $request->year;
if (!$form_user) {
return abort(404);
}
$user = User::find($form_user);
if ($user) {
return redirect()->route('admin.reports.show', $user->id);
}
return abort(404);
}
}
【问题讨论】:
标签: php mysql laravel eloquent