[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Marcos Birro Calixto
Criador Marcos Birro Calixto 31/05/2021

Boa tarde Carlos.

Na minha rotina de deleetar eu, na verdade, não quero deletar o registro. Quero somente mudar o status de ativo para inativo então no método destroy preciso fazer um updtae mas parece que tem algo erado na minha rotina. TEntei fazer o updte somente do campo ativo e não deu. Parece que espra um array.

    public function destroy($id)
    {
        $local = $this->local->where('id'$id)->first();
        //dd($local);

        if (!$local)
            return redirect()->back();

        $local['ativo'] = 'I';
        //dd($local);

        $local->update($local);

        return redirect()->route('locais.index');
    }
Manager Carlos Ferreira 31/05/2021

Olá, Marcos!
Tudo bem?

Por que não usa o recurso nativo do Laravel, chamado SoftDelete?
https://blog.especializati.com.br/aprenda-como-utilizar-o-recurso-de-soft-deleting-do-laravel/

Se quer alterar apenas o status (se fizer mais sentido para o seu sistema), deve ter uma implementação que altere o status, e não usar o delete.

-----

Para atualizar, o método update espera um array:
$local->update([
    'ativo' => 'I'
]);

Carlos Ferreira
Criador Marcos Birro Calixto 31/05/2021

HUmmm, valeu. Conhecia isso não.

Obrigado

Marcos Birro Calixto
Criador Marcos Birro Calixto 31/05/2021

Bom dia Carlos.
Achei muito legal osoftdelete e quero mesmo usar os recursos corretos do laravel mas não entendi como gravo a data na coluna softdelete.
Fiz isso

namespace App\Models; 
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; 
class Post extends Model
{
    use SoftDeletes;
    protected $dates = ['deleted_at'];
}

 E no método delete do controller só faço o update no campo deleted_at?to é automático? O resto é automático?

Obrigado!
Marcos Birro Calixto
Manager Carlos Ferreira 31/05/2021

Sim, é automático.

Quando faz isso:
$post = Post::find(1);
$post->delete();

Por default vai preencher a coluna deleted_at com o timestamps (data + hora)

E por default o model só busca os registros cujo o valor da coluna deleted_at seja igual a null.

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!