Home > Blockchain >  laravel show random from only one column
laravel show random from only one column

Time:11-24

hello every body i'm trying to get data randomly from only 'categorie_id'get only same category product but it always return products from other categories this is my function in controller

public function product_detail($id){
        $produit = Produit::find($id);
        $cavelepatricecat = Categorie::where("libelle","Cave le patrice")->get();
        $cavelepatrice = [];
        if($cavelepatricecat){
            array_push($cavelepatrice,$cavelepatricecat[0]->id);
            $cavelepatricesouscats =  $cavelepatricecat[0]->sous_categories;
            foreach($cavelepatricesouscats as $s_categories){
                array_push($cavelepatrice,$s_categories->id);
            }
        }
        $produits = Produit::whereNotIn('categorie_id', $cavelepatrice)->inRandomOrder()->take(4)->get();
        //$produits = Produit::select('categorie_id', 'image','nom')->inRandomOrder()->take(4)->get();
        //$produits = Produit::select('categorie_id','image')->get()->random(4);
        return view("store.detail")->with("prod",$produit)->with("produit",$produits);   
    }

this is the table produit model

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Produit extends Model
{
    use HasFactory;

    protected $fillable = [
        'nom', 'prix', 'prixpromo', 'detals', 'image','categorie_id','user_id'
    ];

    public function favories()
    {
        return $this->belongsToMany('App\Models\Favorie');
    }
    public function paniers()
    {
        return $this->belongsToMany('App\Models\Panier');
    }
    public function commandes()
    {
        return $this->belongsToMany('App\Models\Commande');
    }
    public function categories(){
        return $this->belongsTo('App\Models\Categorie','categorie_id');
    }
}

CodePudding user response:

As per your requirements you need to use whereIn() instead of whereNotIn()

$produits = Produit::whereIn('categorie_id', $cavelepatrice)->inRandomOrder()->take(4)->get();

CodePudding user response:

thank you @leena patela i found a solution

public function product_detail($id){
        $produit = Produit::find($id);
        $categorie_id = $produit->categorie_id;
        $produits = Produit::where('categorie_id', $categorie_id)->inRandomOrder()->take(4)->get();
        return view("store.detail")->with("prod",$produit)->with('produit',$produits);   
    }
  • Related