我正在使用laravel 5.6。在我的应用程序中,表名称为车辆,如下所示,
id name model year categoryname user_id
1 toyota 121 2001 car 1
2 nissan sunney 1998 car 2
3 toyota liteace 2000 van 5
4 isuzu elf 2005 truck 9
5 bmw 520d 2010 car 7
现在,我需要根据车辆表的类别名称重定向每个车辆编辑表单。我有像这样的控制器编辑功能吗?
public function edit($id)
{
if (Vehicle::where('categoryname', 'Car')) {
$vehicles = Vehicle::find($id);
$town_list = Town::with('district.province')->groupBy('provincename')->get();
$model_list = DB::table('modols')
->groupBy('categoryname')
->get();
return view('vehicles.caredit')->withVehicles($vehicles)->withTown_list($town_list)->withModel_list($model_list);
}
else if (Vehicle::where('categoryname', 'Van')){
$vehicles = Vehicle::find($id);
$town_list = Town::with('district.province')->groupBy('provincename')->get();
$model_list = DB::table('modols')
->groupBy('categoryname')
->get();
returnview('vehicles.vanedit')->withVehicles($vehicles)->withTown_list($town_list)->withModel_list($model_list);
}
}
但是当我重定向不同的类别名称值(例如car和van)时,它们始终都重定向到caredit.blade.php。那我该如何解决这个问题呢?
答案 0 :(得分:2)
您只是获取查询构建器对象,而不是限制搜索。但是,我猜测您想根据特定模型的类别名称切换视图。在这种情况下,您要检查模型的类别名称值:
public function edit($id)
{
$vehicles = Vehicle::find($id);
$town_list = Town::with('district.province')->groupBy('provincename')->get();
$model_list = DB::table('modols')
->groupBy('categoryname')
->get();
if ($vehicles->categoryname == 'Car') {
return view('vehicles.caredit')->withVehicles($vehicles)->withTown_list($town_list)->withModel_list($model_list);
}
else if ($vehicles->categoryname == 'Van'){
return view('vehicles.vanedit')->withVehicles($vehicles)->withTown_list($town_list)->withModel_list($model_list);
}
}
如果模板的格式始终使用相同的格式,则还可以使用以下内容减少if-else语句的数量:
public function edit($id)
{
$vehicles = Vehicle::find($id);
$town_list = Town::with('district.province')
->groupBy('provincename')
->get();
$model_list = DB::table('modols')
->groupBy('categoryname')
->get();
$categoryName = strtolower($vehicles->categoryname);
return view('vehicles.'.$categoryName.'edit')
->withVehicles($vehicles)
->withTown_list($town_list)
->withModel_list($model_list);
答案 1 :(得分:0)
更改
Vehicle::where('categoryname', 'Car')
到
Vehicle::where('categoryname', 'Car')->get();
您没有访问代码中的实际结果集,需要调用->get()
函数。
一种好的做法是获取结果集,并根据重定向来检查结果集是Van
还是Car
。