将口才生成器转换为查询生成器

Okn*_*per 6 php laravel laravel-5

似乎每个人都在问如何将Query \ Builder转换为Eloquent \ Builder。我需要相反的事情-我有一个定义了一些范围的模型,可以从中创建查询。它返回的结果是我的模型的一个实例。我希望它成为一个普通的对象。

在我看来,获取模型并将其转换为stdClass是不合适的。

这可能吗?

pat*_*cus 5

是。您可以使用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();
Run Code Online (Sandbox Code Playgroud)

另一个仅返回一个对象的示例:

// will return a stdClass object
$user = User::active()->getQuery()->first();
Run Code Online (Sandbox Code Playgroud)

但是请注意,您确实失去了口才的查询功能,例如关系和渴望加载。

例如:

$user = User::with('posts')->active()->getQuery()->get();
Run Code Online (Sandbox Code Playgroud)

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

  • 我认为现在是 toBase() (3认同)