如何使用 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) 用于根据限制获取每页数据。
如果您使用上述任何一种方法,则自动搜索功能将起作用
我正在使用 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) 用于根据限制获取每页数据。
如果您使用上述任何一种方法,则自动搜索功能将起作用