Tengo esta relación en User.php Class:
public function favourites() { return $this->belongsToMany(Product::class, 'favourite_products', 'usr_id', 'prd_id')->withTimestamps(); } Y agregué $user_favourites = \App\User::find(auth()->user()->usr_id); para devolver información de un usuario.
Entonces, si @dd($user_favourites->favourites) , obtengo este resultado:
Ahora quería verificar si la identificación del producto actual es igual a la prd_id de la colección devuelta (que se muestra como 14 en la imagen).
Entonces, ¿cómo puedo hacer eso?
Intenté agregar esto al Modelo, pero devolví un error:
public function available_favourite($id) { return $this->favourites()->where('prd_id','=', $id); }Y llámalo así:
@dd($user_favourites->available_favourite($product->prd_id)->get())
Y aquí está el error:
SQLSTATE[23000]: violación de la restricción de integridad: 1052 Columna 'prd_id' en la cláusula where es ambigua
Entonces, ¿cómo puedo verificar que la identificación del producto actual existe en $user_favourites->favourites ?
puede usar el método contains de la colección para verificar si existe tal prd_id .
public function available_favourite($id) : bool { return $this->favourites->contains('prd_id', $id); } //then check dd($user_favourites->available_favourite($product->prd_id)) excluir () en $this->favourites() solo para hacer referencia a la relación.