Não armazene uma lista separada por vírgulas ("array") em uma coluna de banco de dados. Use uma tabela de referência cruzada .
(Se você quiser impor a condição "não mais de 3 categorias" no banco de dados, você pode adicionar uma coluna adicional
category_number
para a tabela de referência cruzada. Idealmente, você usaria uma restrição de verificação para restringir essa coluna aos valores 1, 2 e 3, mas o MySQL não suporta restrições de verificação; em vez disso, você pode fazer o category_number
coluna uma chave estrangeira para outra tabela permitted_category_number
que tem três linhas.)