xabou / query
Laravel 5 查询对象
v0.7.0
2020-01-10 22:24 UTC
Requires
- illuminate/database: ^6.0
This package is auto-updated.
Last update: 2024-08-29 05:22:12 UTC
README
所有美好的事物都有终结。感谢大家使用此包 :)
Laravel 查询
Query 是一个为 Laravel 应用提供查询对象的包。
安装
1: 通过 composer 需求
在命令行运行
composer require xabou/query
或者,您可以将以下内容放入 composer.json 文件中
{
"require": {
"xabou/query": "^0.5.0"
}
}
2: 注册服务提供者
打开 config/app.php
并将以下内容添加到 providers
数组中
Xabou\Query\QueryServiceProvider::class
用法
创建一个查询
安装此包后,将有一个新的 artisan 命令可用。
php artisan make:query PopularUsersQuery
如果不存在,将在您的应用中创建一个 'Queries' 目录。
声明查询体
在 body 方法中您可以声明您的查询
public static function body() { return User::select(['user.username', 'user.id', 'user.verified', 'popularity_user.score']) ->join('popularity_user', 'users.id', '=', 'popularity_user.user_id') ->where('user.verified', 1) ->with('avatar') ->orderBy('popularity_user.score', 'DESC') ->orderBy('user.username', 'ASC'); }
获取结果
体
这是您应该声明查询逻辑的地方。此方法返回 Eloquent 数据库构建器实例或执行的查询。
获取
这是 body 方法的包装器。当 body 返回 Eloquent 数据库构建器实例时,此方法委托给 Builder 的 get 方法。
1: 委托给 Eloquent 数据库构建器
您可以通过返回实例来调用 Eloquent 数据库构建器中定义的任何方法,如上面的示例。
// Dynamic static method calls PopularUsersQuery::first() // or PopularUsersQuery::get() // Dynamic method calls (new PopularUsersQuery())->get()
2: 执行查询
在 body 方法中,您也可以执行您的查询。
public static function body() { return User::select(['user.username', 'user.id', 'user.verified', 'popularity_user.score']) ->join('popularity_user', 'users.id', '=', 'popularity_user.user_id') ->where('user.verified', 1) ->with('avatar') ->orderBy('popularity_user.score', 'DESC') ->paginate(); }
然后只需在 Query 上调用 body 或 get 方法。
PopularUsersQuery::body() //or PopularUsersQuery::get()
注意:在此情况下,get 方法作为 body 方法的别名。它不会委托给 Eloquent 数据库构建器。
3: 链接查询
通过返回 body 的内容,您可以在 Eloquent 数据库构建器上继续链接方法。
PopularUsersQuery::body()->where('age', '>', 25)->get();
传递参数
您可以通过 body 或 get 方法传递任意多的参数。
$age = 25; $verified = 1 PopularUsersQuery::get($age, $verified); public static function body($age, $verified) { return User::where('age', '>', $age) ->where('verified', $verified); }