📖
リレーショナルデータの値をセレクトボックスで絞る検索を実装する(Laravel-Admin)
例えば、 筆者(author)と記事(article)を格納しているDBがあるとすると、
管理画面で記事を検索する場合に、「筆者が男性の記事を検索したい」のように、リレーショナルデータをもとに絞り込みをしたい場合があるかと思います。
公式ドキュメントを見てもよくわからなかったので、色々調べて実装してみました。
絞り込みなので、Laravel-AdminのControllerのgridメソッドの中に書き書きします。
$grid->filter(function ($filter) {
$filter->where(function ($query) {
$gender = $this->input;
$query->whereHas('author', function ($query) use ($gender) {
$query->where('gender', $gender);
});
}, '筆者の性別', 'author_gender')->select([1 => "男性", 1 => "女性"]);
});
こういうふうに書くことができます。
whereの第二引数の「筆者の性別」の部分はラベルの名前で、第三引数の「author_gender」の部分は検索した際のURLのクエリとして使われているっぽいです。
whereとselectの両方を使う方法があったんですね。
ぜひみなさんも困ったら使ってみてください!
Discussion