【问题标题】:Convert Eloquent Builder to Query Builder将 Eloquent Builder 转换为 Query Builder
【发布时间】:2016-05-26 20:06:39
【问题描述】:

好像大家都在问怎么把Query\Builder转成Eloquent\Builder。我需要相反的 - 我有一个定义了一些范围的模型,我从中创建了一个查询。它返回的结果是我的模型的一个实例。我希望它是一个普通的对象。

获取模型并转换为 stdClass 对我来说似乎不合适。

这可能吗?

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    是的。您可以使用 Eloquent 查询构建器构建查询,然后您可以使用基本查询构建器实际执行查询,这将返回 stdClass 对象。

    下面是一个例子。显然,您可以将所有这些东西串联成一行,但我将其分成多行来解释发生了什么。假设您的 User 模型上有一个 active() 范围:

    // start an eloquent query but don't execute it yet
    $query = User::active();
    
    // add any other conditions...
    
    // get the base builder for the eloquent builder
    $baseQuery = $query->getQuery();
    
    // will return a standard array of stdClass objects
    $users = $baseQuery->get();
    

    另一个只返回一个对象的例子:

    // will return a stdClass object
    $user = User::active()->getQuery()->first();
    

    但请注意,您确实会失去 Eloquent 查询功能,例如关系和预加载。

    例如:

    $user = User::with('posts')->active()->getQuery()->get();
    

    这将为用户运行帖子查询,并且帖子将附加到返回的 stdClass 对象。

    【讨论】:

    • 我认为它现在是 toBase()
    • toBase $query = User::toBase();
    猜你喜欢
    • 2015-02-05
    • 2021-10-04
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 2015-06-15
    • 1970-01-01
    • 2020-04-26
    相关资源
    最近更新 更多