1
resposta

Relacionamento Laravel

Olá, eu tenho as seguintes tabelas (simplificando):

users:
    id - integer

products:
    id - integer
    name - varchar

orders:
    id - integer
    user_id - integer (relacionado com users.id)
    paid - boolean

order_items:
    order_id - integer (relacionado com orders.id)
    product_id - integer (relacionado com products.id)

Como eu posso pegar usando relacionamentos, todos os producs.names do usuário 1 que está com o orders.paid = true?

1 resposta

Oi Larissa, como vai?

Para obter todos os nomes dos produtos de um usuário específico (com ID 1) cujos pedidos foram pagos (com orders.paid = true), você precisará realizar uma junção (join) entre as tabelas users, orders, order_items e products. Aqui está a consulta SQL para realizar essa operação:

SELECT products.name
FROM users
JOIN orders ON users.id = orders.user_id
JOIN order_items ON orders.id = order_items.order_id
JOIN products ON order_items.product_id = products.id
WHERE users.id = 1 AND orders.paid = true;

Nesta consulta, estamos selecionando os nomes dos produtos da tabela products. Em seguida, fazemos uma junção entre as tabelas users, orders, order_items e products usando as chaves estrangeiras correspondentes. Em seguida, aplicamos as condições users.id = 1 para filtrar os resultados pelo ID do usuário desejado e orders.paid = true para garantir que apenas pedidos pagos sejam incluídos.

Execute essa consulta no seu banco de dados para obter os nomes dos produtos para o usuário 1 com pedidos pagos.

Espero ter ajudado.

Abraços e bons estudos!