2
respostas

O Save() não está persistindo no MySQL

Vinícius, eu estou fazendo um sistema, mas as funcionalidades de editar e excluir não consegui fazer funcionar, pode me dar uma ajudinha, por favor? Eu executar F5 , os dados antigos são exibidos e ao consultar o banco, percebo q não foram persistidos.

Minha migration:

        Schema::create('tb_banco', function(Blueprint $table)
        {
            $table->integer('ID_BANCO', true);
            $table->string('CD_BANCO', 5);
            $table->string('NM_BANCO', 100);
        });

Minha model:

   protected $table = 'tb_banco';
    protected $primaryKey = 'id_banco';
    public $timestamps = false;
    protected $fillable = ['cd_banco','nm_banco'];

Minha controller:

    public function editaNome(int $id, Request $request)
    {
        $novoNome = $request->nome;
        $banco = Banco::find($id);
        $banco->nm_banco = $novoNome;
        $banco->save();
    }

Router:

Route::post('/banco/{id}/editaNome', 'BancoController@editaNome')
    ->middleware('autenticador');

Javascript:

    function editarBanco(id) {
        let formData = new FormData();
        const nome = document
            .querySelector(`#input-nome-banco-${id} > input`)
            .value;
        const token = document
            .querySelector(`input[name="_token"]`)
            .value;
        formData.append('nome', nome);
        formData.append('_token', token);
        const url = `/banco/${id}/editaNome`;
        fetch(url, {
            method: 'POST',
            body: formData
        }).then(() => {
            toggleInput(id);
            document.getElementById(`nome-banco-${id}`).textContent = nome;
        });
    }

Minha view index.blade:

<ul class="list-group">
    @foreach($bancos as $banco)
    <li class="list-group-item d-flex justify-content-between align-items-center">
        <span id="cod-banco-{{ $banco->ID_BANCO }}" >{{ $banco->CD_BANCO }}</span>
        <span id="nome-banco-{{ $banco->ID_BANCO }}">{{ $banco->NM_BANCO }}</span>

        <div class="input-group w-50" hidden id="input-nome-banco-{{ $banco->ID_BANCO }}">
            <input type="text" class="form-control" value="{{ $banco->NM_BANCO }}">
            <div class="input-group-append">
                <button class="btn btn-primary" onclick="editarBanco({{ $banco->ID_BANCO }})">
                    <i class="fas fa-check"></i>
                </button>
                @csrf
            </div>
        </div>

        <span class="d-flex">
            @auth
            <button class="btn btn-info btn-sm mr-1" onclick="toggleInput({{ $banco->ID_BANCO }})">
                <i class="fas fa-edit"></i>
            </button>
            <form method="post" action="/banco/{{ $banco->ID_BANCO }}"
                  onsubmit="return confirm('Tem certeza que deseja remover {{ addslashes($banco->NM_BANCO) }}?')">
                @csrf
                @method('DELETE')
                <button class="btn btn-danger btn-sm">
                    <i class="far fa-trash-alt"></i>
                </button>
            </form>
            @endauth
        </span>
    </li>
    @endforeach
</ul>
2 respostas

E como eu posso debugar na Controller?

Opa, Carlos.

Pra debuggar você pode utilizar o Xdebug que é a forma mais profissional, mas você também pode exeuctar um var_dump para ver os valores das variáveis.

No seu navegador você também consegue ver se a requisição está acontecendo de forma bem sucedida. É só apertar F12 e ir na aba "Network". Depois, tente editar o nome novamente e veja se algum erro aparece.