Read this in other languages: English, 日本語.
Laravel用検索ヘルパー
composer require technote/laravel-search-helper
Searchable Contract
と Searchable Trait
を実装
setConditions
メソッド を実装
<?php
namespace App\Models;
use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Technote\SearchHelper\Models\Contracts\Searchable as SearchableContract;
use Technote\SearchHelper\Models\Traits\Searchable;
/**
* Class Item
* @mixin Eloquent
*/
class Item extends Model implements SearchableContract
{
use Searchable;
/**
* @var array
*/
protected $guarded = [
'id',
];
/**
* @param Builder $query
* @param array $conditions
*
* @return void
*/
protected static function setConditions(Builder $query, array $conditions): void
{
if (! empty($conditions['s'])) {
collect($conditions['s'])->each(function ($search) use ($query) {
$query->where(function ($builder) use ($search) {
/** @var Builder $builder */
$builder->where('items.name', 'like', "%{$search}%");
});
});
}
}
}
search
メソッドを呼び出し
<?php
use App\Models\Item;
Item::search([
's' => [
'test',
],
'ids' => [1, 2, 3],
])->get();