php - Laravel 查询生成器返回对象还是数组?

标签 php laravel eloquent query-builder

我正在使用 Laravel 构建一个非常简单的网络应用程序。

我构建了两个独立的 Controller ,每个 Controller 返回两个独立的 View ,如下所示:

配置文件 Controller :

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);
    }
}

锻炼 Controller :

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 对象传递给每个 View ,我必须做什么。正如您可能已经注意到的,workout 的查询构建器是不同的:

$workout = DB::table('workouts')->where('user_id', '=', $user->id)->get();

$workout = DB::table('workouts')->where('name', '=', $name)->first();

profile View 中,我使用 ->get(); 方法获取一个对象,但在 add-exercise View 中,我必须使用 ->first(); 否则我会得到一个只有一个索引的数组,然后我可以在其中访问对象,即 $workout[0]->name 而不是 $workout->name

这是为什么?我不应该能够在两个 Controller 中使用 get 和/或 first 并期望两者得到相同类型的结果,因为我想从同一张表中得到相同的东西?

最佳答案

get() 每次都返回一个对象集合。该集合中可能包含 0 个或多个对象,具体取决于查询结果。

first() 在底层调用了 get(),但不是返回结果集合,而是返回集合中的第一个条目(如果有的话).

您使用哪种方法取决于您的需要。您需要收集所有结果(使用 get()),还是只想要收集中的第一个结果(使用 first())?

关于php - Laravel 查询生成器返回对象还是数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28176292/

相关文章:

javascript - 拉维尔 4 : Sidebar is not clickable

php - Laravel 不等于 x 2

php - 我如何显示连接的 3 个表中的项目

php - 如何将内存中的用户提供者注入(inject)到服务中?

php - 升级到 PHP5.6 后,pecl oci8 安装失败

Laravel 数据上传进度条

php - Laravel 5 有条件的多对多同步()

php - 获取两个表的信息

php - wordpress::WP_QUERY 不按标题对帖子进行排序

php - Eloquent ORM 条件模型关系