Executando verificação de segurança...
Em resposta a [Não disponível]
1

Você está em um cenário de relacionamento de muitos-para-muitos entre produtos e cores, e também faz sentido ter um relacionamento de um-para-muitos entre cores e imagens, já que cada cor pode ter muitas imagens. Para lidar com isso no Laravel com o Postgres, você precisa de 3 tabelas: uma para produtos, outra para cores e uma tabela pivot chamada "produto_cor" que liga os produtos às suas cores. Adicione uma coluna "cor_id" na sua tabela de imagens para lidar com o relacionamento da cor com as imagens.

Aqui está um exemplo de como fazer isso:

// Produto.php (Model)
public function cores()
{
    return $this->belongsToMany(Cor::class, 'produto_cor');
}

// Cor.php (Model)
public function produtos()
{
    return $this->belongsToMany(Produto::class, 'produto_cor');
}

public function imagens()
{
    return $this->hasMany(Imagem::class);
}

// Imagem.php (Model)
public function cor()
{
    return $this->belongsTo(Cor::class);
}

Com estas relações, você poderá acessar as imagens relacionadas a uma cor de um produto. O exemplo abaixo irá retornar um array com todas as imagens da primeira cor do produto.

$imagens = $produto->cores->first()->imagens;

Se precisar de ajuda adicional em como configurar essas relações, acredito que a documentação https://laravel.com/docs/master/eloquent-relationships) possa ajudar.

Carregando publicação patrocinada...