为什么此查询对我的刀片文件不起作用?

时间:2019-07-26 22:35:46

标签: laravel laravel-blade

我正在尝试对表进行SELECT *查询,它具有我需要用来过滤数据的uniquerparameter列...并且出现此错误:

SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL 
 Server]Conversion failed when converting from a character string to 
  uniqueidentifier. (SQL: select * from [vw_DigitalLibrary_History] where 
 [ManualBook_SectionParagraphGlobalID] =  '588237FB-7A69-40F8-AE85- 
 9596EEF44894') (View: C:\inetpub\wwwroot\digital- 
 library\resources\views\admin\going_live.blade.php)

此uniqueidentifier列:ManualBook_SectionParagraphGlobalID

使用laravel生成的同一查询及其错误:

select * from [vw_DigitalLibrary_History] where 
 [ManualBook_SectionParagraphGlobalID] =  '588237FB-7A69-40F8-AE85- 
 9596EEF44894'

在SQL Management Studio上像魅力一样工作

我已经尝试过了:

$FutureHist = App\History::where('ManualBook_SectionParagraphGlobalID', $split[1])->limit(1)->get();

试图转换它,但我认为它以字符串形式到达SQL Server

$split = explode("=", $Future[0]["Filter"]);

$FutureHist = App\History::where('ManualBook_SectionParagraphGlobalID', TRY_CONVERT($split[1], uniqueidentifier))->limit(1)->get();

我希望$ FutureHist变量能得到结果,但是我还没有找到绕过此错误的方法。

解决方案: 对于面临同样错误的可怜灵魂,您可以按照dparoli所说的去做,但是''部分存在一些问题。这就是您应该如何处理

$FutureHist = App\History::whereRaw("ManualBook_SectionParagraphGlobalID = CONVERT(UNIQUEIDENTIFIER, ".$split[1].")")
    ->limit(1)->get();

1 个答案:

答案 0 :(得分:1)

如果我正确理解,您可以尝试使用whereRaw()和演员表,例如:

App\History::whereRaw("ManualBook_SectionParagraphGlobalID = CONVERT(UNIQUEIDENTIFIER, '588237FB-7A69-40F8-AE85-9596EEF44894')")
    ->limit(1)->get();

或使用变量扩展:

App\History::whereRaw("ManualBook_SectionParagraphGlobalID = CONVERT(UNIQUEIDENTIFIER, '$split[1]')")
    ->limit(1)->get();