Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema com update

Infelizmente um curso que não é completo(falta update de produto), o intuito da alura é ensinar, não fazer a gente correr no escuro.

Recebo o erro (2/2) ErrorException Object of class App\Categoria could not be converted to int (View: U:\Programas\xampp\htdocs\sites\estudo\alura\laravel\estoque\resources\views\altera.blade.php) ao acessar o formulário de alterar de algum produto que tenha uma categoria, os que estão sem categoria, entra no formulário.

ProdutoController

 public function busca($id) {
    $resposta = produto::find($id);
    $categorias = Categoria::all();

    if (empty($resposta)) {
      return "Esse produto não existe";
    }
    return view('altera')->with('produto', $resposta)->withCategorias($categorias);
  }

  public function altera($id) {

    $produto = Produto::find($id);
    $valores = Request::all();

    $produto->fill($valores)->save();

    return redirect()->action('ProdutoController@lista');
  }

altera.blade.

<div class="form-group">
      <label>Categoria</label>
      <select name="categoria" class="form-control">
        @foreach($categorias as $categ)
        <?php
        $essaEhACategoria = $produto->categoria == $categ->id;
        $selecao = $essaEhACategoria ? "selected= 'selected'" : "";
        ?>
        <option value="{{$categ->id}}" {{$selecao}}>
          {{$categ->nome}}
        </option>
        @endforeach
      </select>
    </div>

Se alguém puder me ajudar, agradeço desde já.

2 respostas
solução!

Oi Anderson, tudo bom?

Acredito que o problema esteja aqui:

        $essaEhACategoria = $produto->categoria == $categ->id;

Estamos tentando comparar uma referencia à Categoria com o Id(um numero inteiro).

Tenta alterar para a comparação enre os dois ids, algo como:

        $essaEhACategoria = $produto->categoria->id == $categ->id;

Olá, eu não consegui fazer o update e nem o remove seguindo os passos do instrutor. Acho que minha versão esta diferente. Só consegui fazer esses métodos da seguinte forma:

    public function atualizarProduto() {
        Produto::where('ID', Request::input('id'))->update(array(
            'nome' => Request::input('nome'),
            'descricao' => Request::input('descricao'),
            'valor' => Request::input('valor'),
            'quantidade' => Request::input('quantidade')
        ));
        return redirect()->action('ProdutoController@lista')->with('mensagem', 'Produto atualizado com sucesso!');
    }

    public function removerProduto($id){        
        Produto::where('id', $id)->delete();
        return redirect()->action('ProdutoController@lista');
    }