1
resposta

Não entendi bem o conceito.

Minhas dúvidas são bem conceituais mesmo e preciso entender melhor para poder dar prosseguimento.

No meu banco, eu tenho a tabela series criada através do migrations, com os campos id, nome e timestamps. Até aí ok.

Foi criada a Model Serie.php.

class Serie extends Model
{
    use HasFactory;
}

Em meu SeriesController, há os métodos index() e store(Request $request).

public function index()
    {

        //Usando agora o Eloquent ORM
        // Faz um select total na tabela series
        $as_series = Serie::all();

        return view('series.index')->with('seriess', $as_series);
    }
public function store(Request $request)
    {
        $nomeSerie = $request->input('nome');
        $serie = new Serie();
        $serie->nome = $nomeSerie;
        $serie->save();
        // as operações SQL com o DB, nos fornece acesso direto ao BD (select, update, delete, insert)
        //DB::insert('INSERT INTO series (nome) VALUES (?)', [$nomeSerie]);
        return redirect('/series');
    }

Dúvida 1: No método index(), como o programa sabe que Serie se refere à tabela series do meu banco de dados? Onde está essa ligação??

Dúvida 2: No método store(), como eu consegui instanciar a classe Serie(), atribuindo ao campo "nome" o valor de $nomeSerie vindo do input? Ou seja, o campo "nome" eu sei que é um campo da minha tabela, mas como ele virou um atributo da classe Serie() ??

Agradeço se puder explicar detalhadamente, porque embora as aulas sejam muito boas, elas em determinado momento são muito corridas e a gente acaba se perdendo um pouco...

Obrigado!

1 resposta

Dúvida 1: Essa ligação se dá por provavelmente se tratar de uma Model do Eloquent ORM, não dá pra ver os namespaces, mas suspeito disso pelo "extends Model".

Dúvida 2: Mesma coisa, isso é pelo Eloquent ORM, basicamente ele faz com que o objeto criado a partir dele possa se relacionar com o banco de dados, acessando/alterando dados de forma simplificada. Lembrando que só conseguiu salvar a informação pois já existe um campo "nome" nessa tabela no banco de dados.

Essa Model também possui muitas outras funcionalidades, é bastante complexa, recomendo ler a documentação do laravel para entender mais.