似乎每个人都在问如何将Query \ Builder转换为Eloquent \ Builder。我需要相反的 - 我有一个模型,其中定义了一些范围,我从中创建了一个查询。它返回的结果是我的模型的一个实例。我希望它是一个普通的对象。
获取模型并转换为stdClass并不适合我。
这可能吗?
答案 0 :(得分:3)
是。您可以使用Eloquent查询构建器构建查询,但是您可以使用基本查询构建器实际执行查询,该构建器将返回stdClass对象。
以下是一个例子。很显然,你可以把所有这些东西连在一起组成一行,但我把它分成了几行来解释发生了什么。假设您的active()
型号有User
范围:
// 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对象。