J'ai une application Laravel qui nécessite deux tables distinctes pour les produits. Un modèle PurchaseProduct
gère les produits que nous allons acheter de nos clients. Un autre modèle SaleProduct
gère le produit que nous allons vendre à nos clients.Définir dynamiquement le modèle cible d'une relation Eloquent Model?
Nous utilisons un modèle unique Category
pour gérer les produits. Nous avons un tableau pivotant category_products
pour gérer les relations produit/catégorie. Il a simplement des colonnes category_id
et product_id
.
Étant donné que mon application est une API, je souhaite recevoir un paramètre de requête lorsqu'une demande est envoyée à mon point de terminaison. Comme si: /api/category&type=pp
PP
se traduira évidemment en PurchaseProduct
et SP
à SaleProduct
.
Ok, donc ce que je suis désireux de faire est d'avoir une relation déclarée sur mon modèle Category
:
public function products()
{
if (--) {
$model = 'App\Models\SaleProduct';
} else {
$model = 'App\Models\PurchaseProduct';
}
return $this->belongsToMany($model, 'category_products', 'category_id', 'product_id')->withTimestamps();
}
Comme vous pouvez le voir, je ne suis pas sûr comment définir cette instruction conditionnelle pour déclencher le modèle que je veux utiliser pour la relation. Si elle était basée sur une base de données, ce ne serait pas si difficile, mais comment pourrais-je en quelque sorte passer ce paramètre de requête au modèle et définir dynamiquement le bon modèle de produit?
Peut-être que cela fonctionnera pour vous? https://laravel.com/docs/5.2/eloquent-relationships#polymorphic-relations – NSSec