Pessoal, estou aprendendo laravel e me surgiu a seguinte dúvida:
Preciso retornar os dados da tabela product e product_models em 2 lugares diferentes:
1- para um painel de controle onde eu quero que seja listado todos os produtos para que eu possa fazer alterações.
2-para a página que o usuário visualizará, porém aqui quero colocar um filtro no status para exibir apenas produtos ativos.
Uma pequena explicação sobre a estrutura:
1 empresa possui N produtos
1 produto pertence a 1 empresa
1 produto possui N modelos de produto
1 modelo de produto pertence 1 produto
class Company extends Model
{
public function products()
{
return $this->hasMany(Product::class);
}
}
class Product extends Model
{
public function productModels()
{
return $this->hasMany(ProductModel::class,'product_id');
}
public function company()
{
return $this->belongsTo(Company::class);
}
}
class ProductModel extends Model
{
public function product()
{
return $this->belongsTo(Product::class);
}
}
No primeiro caso está funcional por conta do relacionamento, apenas faço a seguinte chamada $company->products e obtenho todos os produtos e dentro de um foreach de $produtos consigo usar os $product->productModels. Aqui está perfeito.
No segundo caso como devo fazer? criar um segudo método de relacionamento na model Companies e aplicar o filtro nele assim?
public function activeProducts()
{
return $this->hasMany(Product::class,'company_id')->where('status',1);
}
Funcionou assim, mas gostaria de saber se é a melhor forma, fico agradecido se puderem me guiar com os saberes das boas práticas, obrigado!