hanieas / larasearch
此包的最新版本(0.0.1)没有可用的许可信息。
0.0.1
2023-11-20 15:40 UTC
Requires
- php: ^8.2
- ext-pdo: *
- laravel/framework: ^10.0
Requires (Dev)
- phpunit/phpunit: ^9.3
README
这是一个构建用于轻松与Laravel和数据库集成的搜索包。
安装
composer require hanieas/larasearch
用法
准备模型
为了通过模型进行搜索,您必须让它们实现可搜索接口。
namespace LaraSearch; interface Searchable { /** * @return array */ public function getColumnsForExactMatch(): array; /** * @return array */ public function getColumnsForLikeMatch(): array; /** * @return array */ public function getColumnsForBooleanMatch(): array; /** * @return array */ public function getColumnsForPeriodMatch(): array; }
您需要在您的模型中添加以下4个函数来定义您表列的搜索类型。此包将搜索模型中可填充属性中的项。
use LaraSearch\Searchable; class User extends Model implements Searchable { protected $fillable = [ 'username', 'mobile', 'is_active', 'logged_in', ]; /** * @return array */ public function getColumnsForExactMatch(): array { return [ 'mobile' ]; } /** * @return array */ public function getColumnsForLikeMatch(): array { return [ 'username' ]; } /** * @return array */ public function getColumnsForBooleanMatch(): array { return [ 'is_active' ]; } /** * @return array */ public function getColumnsForPeriodMatch(): array { return [ 'logged_in' ]; } }
搜索
模型准备就绪后,您可以这样进行搜索:
class UserController extends Controller { /** * @return JsonResponse */ public function index(): JsonResponse { $users = new Search(Request()->toArray(), User::query())->get(); return response()->json([ 'users' => $users ]); } }
您可以通过调用以下链接轻松地从用户列表中进行搜索
{{address}}/users?username=hanie?mobile=?is_active=1?logged_in_from=2023-10-10?logged_in_to=2023-12-10