Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Curso de Laravel para Noobs - #17 Models VIII [HasMany]

04/07/2023

Na aula de hoje aprenderemos como usar o relacionamento de um pra muitos dentro do Laravel, o famoso hasMany.

hasMany no Laravel

No Laravel, o relacionamento "hasMany" é usado para representar uma relação de um-para-muitos entre dois modelos. Ele permite que um modelo tenha vários registros associados em outro modelo.

Criando os models

Iniciaremos criando dois models, um para pedidos e outro para os itens relacionados a este pedido:

php artisan make:model Pedido -mcr
php artisan make:model PedidoItems -mcr

Migrations

As migrations serão responsáveis pela criaçao das tabelas pedidos e pedido_items no nosso banco.

 public function up()
{
    Schema::create('pedidos', function (Blueprint $table) {
        $table->id();
        $table->integer('numero');
        $table->timestamps();
    });
}
public function up()
{
    Schema::create('pedido_items', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->unsignedBigInteger('pedido_id');
        $table->foreign('pedido_id')->references('id')->on('pedidos');
        $table->timestamps();
    });
}

Não esqueça de depois rodar o comando:

php artisan migrate

routes/web.php

Criaremos uma rota get para testarmos o relacionamento:

Route::get('/pedidos',[\App\Http\Controllers\PedidoController::class,'index'])->name('pedidos.index');

app/Models/Pedido.php

No models Pedido implementaremos a função relatedItems que trará a relação hasMany (um pedido para muitos items):

public function relatedItems()
{
    return $this->hasMany(PedidoItems::class,'pedido_id','id');
}

Repare no código acima que o primeiro parâmetro é o outro model do relacionamento, o segundo parametro é a chave estrangeira e o terceiro parâmetro é a chave local do model Pedido.

app/Http/Controllers/PedidoController.php

Vamos criar agora o método que vai fazer o relacionamento hasMany entre as duas tabelas:

public function index()
{
    $pedidos = Pedido::orderBy('id')->get();
    foreach ($pedidos as $pedido){
        echo $pedido->numero.'<br>';
        foreach($pedido->relatedItems as $item){
            echo $item->name.'<br>';
        }
        echo '<hr>';
    }
}

Por hoje é só! Fiquem todos com Deus! Sucesso nos códigos e na vida!

Precisa de um guia? webdesignemfoco@gmail.com

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Curso de Laravel para Noobs - #16 Models VII [Delete e Soft Delete]
Neste tutorial falaremos sobre dois conceitos importantes dentro do manejo do banco de dados que são: exclusão ou delete e o conceito de soft delete.
Saiba mais!
Curso de Laravel para Noobs - #18 Models IX [whereIn]
Neste tutorial aprenderemos como realizar consultas no banco de dados do Laravel tendo como origens arrays. Para isso, utilizaremos o método whereIn.
Saiba mais!
Framework
Nessa playlist aprenderemos um pouco mais sobre os diferentes frameworks existentes, apontando os defeitos e qualidades de cada um.
Saiba mais!