Je suis nouveau sur Laravel et je souhaite filtrer des produits spécifiques.
J'ai deux tables dans ma base de données, la première est la table products
et la seconde est la table attributs
.
Liste de produits
Schema::create('products', function (Blueprint $table) { $table->bigIncrements('id'); $table->BigInteger('category_id')->unsigned()->nullable(); $table->string('nom'); $table->string('code'); $table->integer('status')->default(1); $table->integer('featured')->default(1); $table->string('image'); $table->longText('short_description'); $table->longText('long_description'); $table->horodatages(); })Tableau des attributs du produit
Schema::create('product_attributes', function (Blueprint $table) {. $table->bigIncrements('id'); $table->unsignedBigInteger('product_id'); $table->string('sku'); $table->string('taille'); $table->string('couleur'); $table->string('prix'); $table->string('stock'); $table->horodatages(); })Relation
Parce que j'ai plusieurs attributs pour un seul produit
class Le produit étend le modèle { utilisez HasFactory ; attributs de fonction publique() { return $this->hasmany('AppModelsProductAttributes', 'product_id'); } }Mes fichiers Blade
J'ai une fonction dans mon contrôleur
boutique de fonctions publiques() { $filter_products = Product::with('attributes')->where(['category_id' => $category->id, 'color' => $request->color]); return view('frontend.shop', compact('filter_products')); }Je n'obtiens aucun résultat après avoir appliqué cette fonction
Veuillez me guider sur la manière de filtrer les produits en fonction d'une taille ou d'une couleur spécifique sur la page frontale du magasin. et quel code sera inclus dans la fonctionnalité du magasin.
Veuillez me répondre, je vous remercierai beaucoup
Vous devez filtrer par relation, veuillez consulter la documentation
https://laravel.com/docs/9 .x/eloquent-relationships#querying-relationship-existence
Exemples Utilisez WhereHas
Si appliqué nulle part, toutes les propriétés seront restituées
Vous pouvez empêcher ce comportement en utilisant le même filtre appliqué dans WhereHas