I want to add to the wishlist; after I click add, I get an error. I believe that the way I want to access the product is wrong.
public function addToFavorie($id)
{
$user = Auth::user();
$product = produit::find($id);
if (!$product || !$user) {
abort(404);
}
// I believe this is the part responsible for the error
$favorie = $user->favorie;
$favprds = $favorie->produits;
//
for ($i = 0; $i < count($favprds); $i ) {
if ($favprds[$i]->id == $id)
return redirect()->back()
->with('error', 'produit deja dans votre favorie');
}
$favorie->produits()->attach($product->id);
return redirect()->back()->with('info', 'produit ajoute a votre favorie');
}
Model
public function user()
{
return $this->belongsTo("App\Models\User");
}
public function produits()
{
return $this->belongsToMany('App\Models\Produit', 'produits_favories');
}
I tried this in the controller, and it returned 404.
$user = Auth::user()->favorie;
$product = produit::find($id);
if (!$product || !$user) {
abort(404);
}
$favprds = $favorie->produits;
CodePudding user response:
Instead of Using "belongsToMany" in
public function produits() { return $this->belongsToMany('App\Models\Produit', 'produits_favories'); }
use "hasMany" like this
public function produits() { return $this->hasMany('App\Models\Produit', 'produits_favories'); }
It should work
CodePudding user response:
public function addToFavorie($id)
{
$product = produit::findOrFail($id);
$favorie = Favorie::firstOrCreate([
'user_id' => auth()->id()
], [
/* attributes for a `Favorie` instance */
]);
$favorie->produits()->syncWithoutDetaching($product->id);
return redirect()->back()->with('info', 'produit ajoute a votre favorie');
}