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);
}