我正在用Laravel构建一个非常简单的Web应用程序.
我已经构建了两个独立的控制器,每个控制器返回两个单独的视图,如下所示:
ProfileController可:
class ProfileController extends BaseController {
public function user($name)
{
$user = User::where('name', '=', $name);
if ($user->count())
{
$user = $user->first();
$workout = DB::table('workouts')->where('user_id', '=', $user->id)->get();
Return View::make('profile')
->with('user', $user)
->with('workout', $workout);
}
return App::abort(404);
}
}
WorkoutController:
class WorkoutController extends BaseController {
public function workout($name)
{
$workout = DB::table('workouts')->where('name', '=', $name)->first();
if ($workout)
{
Return View::make('add-exercise')
->with('workout', $workout);
}
return App::abort(404);
}
}
令我困惑的是我为了将单个锻炼对象传递给每个视图而必须做的事情.您可能已经注意到,用于锻炼的查询构建器是不同的:
$workout = DB::table('workouts')->where('user_id', '=', $user->id)->get();
和
$workout = DB::table('workouts')->where('name', '=', $name)->first();
在配置文件视图中,我使用 – > get();获取对象方法,但在add-exercise视图中,我必须使用 – > first();或者我将得到一个只有一个索引的数组,然后我可以访问该对象,即$workout [0] – > name而不是$workout-> name.
为什么是这样?我不应该能够在两个控制器中使用get和/或first,并期望同一类型的结果,因为我想从同一个表中获取相同的东西吗?