【Laravel / whereRaw】 カンマ区切りのデータを検索したいとき

DBのデータがカンマ区切りの場合

基本的に、1対多や多対多リレーションの場合は中間テーブルを使用する。
ドキュメントはこちら

けどまれに、
category_ids: 1,5,8のようにカンマ区切り設計に遭遇することがある
その時の検索方法メモ

whereRawとFIND_IN_SETで解決

例えば
Bookテーブルのcategory_idsカラム(1, 5, 8…)に
$category_idが含まれているものを検索したい場合

こうすればOK

$query = Book::query();
$query->whereRaw('FIND_IN_SET(?, category_ids)', [$category_id]);