如何使用 laravel 存储库模式可搜索数组?

How to use laravel repository pattern searchable array?

我正在使用 laravel-存储库模式,我有一个 api 负责让所有用户正常工作,如果我们默认使用该包,搜索应该支持我在存储库 class.

中设置 $fieldSearchable 数组

我打了一个 api 像这样 localhost.com/api/lists?search=foo, 它不工作 你能帮我看看我错在哪里吗

UserController.php

public function __construct(UserRepositoryInterface $repository)
    {
        $this->repository = $repository;
    }
 public function getUsers(){
        $data = $this->repository->show();
        return response()->json(fractal($data, new UserTransformer()));
    }

UserRepositoryInterface.php

interface UserRepositoryInterface extends RepositoryInterface
{
    public function show();
}

UserRepository.php

<?php

namespace App\Repositories;

use Prettus\Repository\Eloquent\BaseRepository;
use Prettus\Repository\Criteria\RequestCriteria;
use App\User as AppUser;
use App\UserSection;
use App\Validators\UserValidator;
use Illuminate\Support\Facades\DB;

/**
 * Class UserRepositoryEloquent.
 *
 * @package namespace App\Repositories;
 */
class UserRepository extends BaseRepository implements UserRepositoryInterface
{

  protected $fieldSearchable = ['phone_number'];
    /**
     * Specify Model class name
     *
     * @return string
     */
    public function model()
    {
        return AppUser::class;
    }

    /**
     * Boot up the repository, pushing criteria
     */
    public function boot()
    {
        $this->pushCriteria(app(RequestCriteria::class));
    }

  

    public function show(){
      return $this->model()::get();
    }
    
}


它可能通过使用pre-difined方法来解决无需编写show()函数逻辑,因为默认情况下l5-Repository模式包含一些获取所有数据的方法all()paginate().在你的控制器中这样写 getUsers()

$data = $this->repository->all();
or
$data = $this->repository->paginate('25');

all() 用于从数据库中获取所有数据,paginate($limit) 用于根据限制获取每页数据。

如果您使用上述任何一种方法,则自动搜索功能将起作用