odoku/eloquent-searcher
Composer 安装命令:
composer require odoku/eloquent-searcher
包简介
Give searching power to Eloquent.
README 文档
README
Usage
Create searcher class.
namespace App\Searchers; use EloquentSearcher\Searcher; class UserSearcher extends Searcher { protected $searchFields = [ 'group.name' => Searcher::EQUALS, 'name' => Searcher::CONTAINS, 'is_active' => Searcher::IS_TRUE, 'created_at' => Searcher::DATE_RANGE, 'project' => 'searchProject', ]; protected $keywordFields = [ 'group.name' => Searcher::EQUALS, 'name' => Searcher::CONTAINS, 'notes' => Searcher::CONTAINS, ]; protected function searchProject($query, $field, $value) { return $query->whereHas('projects', function ($query) use ($value) { return $query->where('projects', $value); }); } }
Implement searcher trait into your model.
namespace App\Models; use EloquentSearcher\SearchableTrait; use Illuminate\Database\Eloquent\Model; use App\Searchers\UserSearcher; class User extends Model { use SearchableTrait; protected $searcher = UserSearcher::class; protected $table = 'users'; public $timestamps = true; protected $fillable = [ 'name', 'is_active', 'notes', ]; protected $guarded = []; public function group() { return $this->belongsTo(Group::class); } public function projects() { return $this->hasMany(Project::class); } }
And use it.
namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; class UserController extends Controller { public function index(Request $request) { $conditions = $request->all(); // $conditions = [ // 'keyword' => 'programmer', // 'group' => [ // 'name' => 'Employee', // ], // 'name' => 'James', // 'project' => 'Impressive Project', // 'is_active' => true, // 'created_at' => [ // 'from' => '2016-01-01', // 'until' => '2016-12-31', // ], // ]; $users = User::search($conditions); return view('index', ['users' => $users]); } }
Builtin Rules
- Searcher::EQUALS
- Searcher::CONTAINS
- Searcher::STARTSWITH
- Searcher::ENDSWITH
- Searcher::GT
- Searcher::GTE
- Searcher::LT
- Searcher::LTE
- Searcher::RANGE
- Searcher::DATE_RANGE
- Searcher::DATETIME_RANGE
- Searcher::IN
- Searcher::IS_NULL
- Searcher::IS_NOT_NULL
- Searcher::IS_TRUE
- Searcher::IS_NOT_TRUE
- Searcher::IS_FALSE
- Searcher::IS_NOT_FALSE
odoku/eloquent-searcher 适用场景与选型建议
odoku/eloquent-searcher 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 15.52k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2017 年 02 月 24 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 odoku/eloquent-searcher 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 odoku/eloquent-searcher 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 15.52k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-02-24