Pourquoi Laravel dit-il "La conversion a échoué lors de la conversion de la valeur nvarchar '' en type de données int"

QueryException in Connection.php line 651: SQLSTATE[22018]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Conversion failed when converting the nvarchar value '[]' to data type int. (SQL: select * from Product where pID = []) une fonction de search dans Laravel, et il renvoie l'erreur suivante: QueryException in Connection.php line 651: SQLSTATE[22018]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Conversion failed when converting the nvarchar value '[]' to data type int. (SQL: select * from Product where pID = []) QueryException in Connection.php line 651: SQLSTATE[22018]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Conversion failed when converting the nvarchar value '[]' to data type int. (SQL: select * from Product where pID = []) .

Mon controller se lit comme suit:

 public function productSearch(Request $request){ $searchResult; if($request->input('category') == 'all' ){ $searchResult = Product::where("pCategory", "like", '%') ->where('pName', 'like', $request->input('search'))->get(); }else{ $searchResult = Product::where("pCategory", "like", $request->input('category')) ->where('pName', 'like', $request->input('search'))->get(); } //dd($searchResult); return view('products',['products' => $searchResult]); } 

Et le model se lit comme suit:

 <?php namespace App; use Illuminate\Database\Eloquent\Model; class Product extends Model { protected $table = 'Product'; protected $primaryKey = 'pID'; // public function orderDetails(){ return $this->hasMany('App\OrderDetail','ProductID','pID'); } } 

Je ne comprends pas pourquoi ça continue, d'autant plus que je ne lui request pas de regarder la carte d'identité. Qu'est-ce qui se passe ici?

Structure de la table:

 CREATE TABLE [dbo].[Product] ( [pID] INT IDENTITY (1, 1) NOT NULL, [pName] VARCHAR (50) NOT NULL, [pBrand] VARCHAR (20) NOT NULL, [pCurrentType] VARCHAR (10) NOT NULL, [pVoltage] FLOAT (53) NOT NULL, [pPrice] FLOAT (53) NOT NULL, [pStock] INT NOT NULL, [ImagePath] NVARCHAR (500) NULL, CONSTRAINT [PK_Product] PRIMARY KEY CLUSTERED ([pID] ASC) ); 

D'abord, vous n'avez pas de colonne pCategory dans votre tableau.

Deuxièmement, ne pas appliquer la même clause pour la search lorsque vous recevez tous les parameters de la catégorie.

 public function productSearch(Request $request){ $searchResult = new Product; if($request->has('search') && !empty($request->get('search')) && $request->get('search') !== 'all') { $searchResult = $searchResult->where("pName", "like", '%'.$request->get('search')); } $searchResult = $searchResult->get(); return view('products',['products' => $searchResult]); }