Relacionamentos do Laravel Eloquent


Neste exemplo, veremos relacionamentos do Laravel Eloquent, são eles:

  • One to one
  • One to many
  • Many to many

One to One

O relacionamento one to one (um para um) é básico no laravel. Esse tipo de relacionamento significa que um modelo do tipo A só pode ser vinculado a um modelo do tipo B e vice-versa.

Neste exemplo, um usuário pode ter apenas um passaporte e um passaporte pertence apenas a um usuário.

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function passport() {
        return $this->hasOne(App\Passport::class);
    }
}

No modelo Passport, definiremos o inverso da relação. Informamos ao modelo do Passport que ele pertence a um usuário.

namespace App;

use Illuminate\Database\Eloquent\Model;

class Passport extends Model
{
    public function user() {
        return $this->belongsTo(App\User::class);
    }
}

One to many

O relacionamento One to many (Um para Muitos) significa que um modelo do tipo A pode ser vinculado a vários modelos do tipo B. Mas o modelo do tipo B pertence a apenas um modelo do tipo A.

Por exemplo, uma relação entre um modelo de usuário e um modelo de carrinho seria uma relação um para muitos. Um usuário pode ter vários carrinhos, mas um carrinho pertence apenas a um usuário.

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function carts() {
        return $this->hasMany(App\Cart::class);
    }
}

Definimos agora que o modelo de carrinho pertence a um modelo de usuário.

namespace App;

use Illuminate\Database\Eloquent\Model;

class Cart extends Model
{
    public function user() {
        return $this->belongsTo(App\User::class);
    }
}

Many to many

O relacionamento de Many to many (muitos para muitos) significa que um modelo do tipo A pode ser vinculado a vários modelos do tipo B e vice-versa.

Por exemplo, um relacionamento entre um modelo de carrinho e um modelo de produto seria um relacionamento muitos para muitos. Um carrinho pode ter vários produtos e um produto pode estar em vários carrinhos.

namespace App;

use Illuminate\Database\Eloquent\Model;

class Cart extends Model
{
    public function products() {
        return $this->belongsToMany(App\Product::class);
    }
}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    public function carts() {
        return $this->belongsToMany(App\Cart::class);
    }
}

Moeda Tipo Valor
Dollar Compra R$ 5,97
Dollar Venda R$ 5,97
Data 22/01/2025

January 2025
S M T W T F S
 1234
567891011
12131415161718
19202122232425
262728293031