Bom, eu segui exatamente as instruções do model, mas mesmo assim por alguma razão o código está encontrando a classe mesmo salvando na pasta app e ainda assim o meu código está igualzinho?? então aonde está erro que eu não estou vendo?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Bom, eu segui exatamente as instruções do model, mas mesmo assim por alguma razão o código está encontrando a classe mesmo salvando na pasta app e ainda assim o meu código está igualzinho?? então aonde está erro que eu não estou vendo?
Oi Bruno, tudo bom?
Compartilha com a gente sua classe Produto. Talvez seja um detalhe na declaração do namespace dela.
Aguardo retorno.
Abraço
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Produto extends Model
{
protected $table = 'produtos';
public $timestamps = false;
protected $fillable = array('nome','descricao','valor','quantidade');
protected $guarded = ['id'];
}
Eu criei essa classe pelo Model e salvei no diretório app
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Produto extends Model { protected $table = 'produtos'; public $timestamps = false;
protected $fillable = array('nome','descricao','valor','quantidade');
protected $guarded = ['id']; } Eu criei essa classe pelo Model e salvei no diretório app
Estranho, já tentou o namespace refletindo a estrutura de pastas? algo como:
<?php
namespace estoque;
use Illuminate\Database\Eloquent\Model;
class Produto extends Model
{
protected $table = 'produtos';
public $timestamps = false;
protected $fillable = array('nome','descricao','valor','quantidade');
protected $guarded = ['id'];
}
Além disso, sempre joga a linha do namespace pra baixo da declaração da tag php. as vezes o interpretador não encontra a declaração do namespace quando não damos esse espaço.
Qual versão do laravel você está utilizando? Confere pra mim no seu composer.json =)
Se você quiser, compartilha o código em algum repositorio. Assim, a gente consegue dar uma olhada na configuração do autoloader do composer pra garantir que o arquivo será encontrado.
Abraço
Opa, dando uma olhada no seu composer.json, o processo de autoload está rolando a partir da pasta "app/" com o namespace "App\":
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
}
Então para qualquer classe ser encontrada, basta estar na pasta app/diretorio com o namespace App\diretorio.
Acho que o unico ponto que pode influenciar aqui mesmo é o enter no namespace (já passei por isso algumas vezes):
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use estoque\Produto;
use Request;
class ProdutoController extends Controller {
Já tentou esse espaçamento?
Além disso, o use da classe Produto me parece incorreto.
Seguindo o padrão de autoload estabelecido, devemos usar "App\Produto" para importar a classe ao invés de "estoque\Produto":
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use App\Produto;
use Request;
class ProdutoController extends Controller {
A classe User, por exemplo, não tem nenhum ponto a acrescentar:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
}
O espaçamento e os uses parecem estar de acordo com o autoloader =)
Abraço