Laravel为什么说“将nvarchar值'[]'转换为数据类型int时转换失败”

dluxcru

我在Laravel中编写了一个搜索功能,它引发了以下错误: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 = [])

我的控制器的内容如下:

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

该模型的内容如下:

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

}

我不明白为什么它会继续这样做,尤其是因为我不要求它查看ID。这里发生了什么?

表结构:

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)
);
用户名

首先,您的表中没有pCategory列。

第二,当您收到所有类别参数时,请勿将like子句应用于搜索。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么将varchar值“ This is full”转换为数据类型int时转换失败?

将nvarchar值“ test”转换为数据类型int时转换失败

SQL:将nvarchar值“ XXX”转换为数据类型int时转换失败

将nvarchar值转换为数据类型int时转换失败

将nvarchar值'....'转换为数据类型int时转换失败

将nvarchar值“ Landmark Acq vPay”转换为数据类型int时转换失败

将nvarchar值转换为数据类型int时转换失败

“将nvarchar值'113332,113347'转换为数据类型int时转换失败。”

将 varchar/nvarchar 值转换为数据类型 int 时转换失败

将nvarchar值'$ 28,926.25'转换为数据类型int时转换失败

CASE语句中的“将nvarchar值转换为数据类型int时转换失败”

将nvarchar值'6,7'转换为数据类型int时转换失败

将 nvarchar 值“01HP011”转换为数据类型 int 时转换失败

将 nvarchar 值“1,501,907”转换为数据类型 int 时转换失败

转换nvarchar值'7575932'时转换失败。转换为int数据类型

SQL Server转换错误:将nvarchar值“ XXX”转换为数据类型int时转换失败

将varchar值'@id'转换为数据类型int时转换失败

将“无效”值“Residential”转换为数据类型 int 时转换失败

将varchar值'U'转换为数据类型int时转换失败

将varchar值'xxx'转换为数据类型int时转换失败

将varchar值'where name_id in('转换为数据类型int时,转换失败

将varchar值'29 / 09/2016'转换为数据类型int时转换失败

将varchar值'_1'转换为数据类型int时转换失败

将varchar值'is_special_taken'转换为数据类型int时转换失败

将varchar值'Id'转换为数据类型int时转换失败

将varchar值'@uye_yasi'转换为数据类型int时转换失败

将字符串的 varchar 值转换为数据类型 int 时转换失败

将varchar值'Oct'转换为数据类型int时转换失败

SQL-将Varchar值转换为数据类型Int时转换失败