コールバックを使用して、より複雑な結合クエリを作成できます。
->leftJoin(TBL_CAT, function($query){
$query->on(TBL_CAT.'id', '=', 'p.cat_id')->where("**", "**", "**");
})
これがlaravelドキュメントのリンクです-
UPD ::コメントで述べたように、そのようなタイプのデータに文字列を含めることはお勧めできません。等式による原因検索は、文字列チェックよりもはるかに簡単なはずです。データ量に大きな違いがない場合でも、将来アプリで何が起こるかはわかりません。
しかし、それでもやりたいのであれば、このように試すことができると思います
->leftJoin(TBL_CAT, function($query){
$query->where(DB::raw("FIND_IN_SET(".TBL_CAT.".id, p.cat_id)"), "<>", "0");
})
cat_idにidが存在するかどうかを確認するために参加します。