端くれプログラマの備忘録 Laravel [Laravel] インデックスするデータを絞り込む (Laravel Scout)

[Laravel] インデックスするデータを絞り込む (Laravel Scout)

デフォルトだとSearchableなModelの全カラムがインデックスされる。

インデックスしたくないカラムがある場合はSearchableのtoSearchableArray()を上書きして、リターンされる配列からそのカラムのデータを除外すれば良いらしい。

namespace App;

use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;

class Article extends Model
{
  use Searchable;

  /**
  * Get the indexable data array for the model.
  *
  * @return array
  */
  public function toSearchableArray()
  {
  $array = $this->toArray();

  // Customize array...
  unset($array['id']);
  unset($array['image1']);
  unset($array['image2']);
  unset($array['image3']);
  unset($array['published_on']);
  unset($array['created_at']);
  unset($array['updated_at']);

  return $array;
  }

  protected $fillable = ['image1', 'image2', 'image3', 'title', 'description', 'published_on'];
  protected $dates = ['published_on'];
}

参考サイト

Laravel Scout – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/5.4/scout#configuration