Avatar ·

Verificação de existência de registro no Laravel: formas corretas e erros comuns

Olá a todos! Sou novo no Laravel e PHP, estou escrevendo meu primeiro projeto — um blog simples. Tenho um model Post e uma tabela posts. Preciso verificar, antes de adicionar um novo post, se já existe um registro com o mesmo título (slug). Tentei várias opções, mas sinto que estou fazendo algo errado.

Aqui está meu código atual no controller:

public function store(Request $request)
{
    $slug = $request->input('slug');
    $existing = DB::table('posts')->where('slug', $slug)->get();
    if (count($existing) > 0) {
        return back()->with('error', 'Esse slug já existe');
    }
    // ... salvamento
}

Mas li que usar count() e get() para isso não é eficiente, especialmente se a tabela for grande. Também vi que alguns usam first(), exists() ou doesntExist(). E ainda tem o método find() para verificar por ID.