【问题标题】:Why does this query does not work on my blade file?为什么此查询不适用于我的刀片文件?
【发布时间】:2019-12-05 06:00:37
【问题描述】:

我正在尝试对表执行 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)

这是唯一标识符列:ManualBook_SectionParagraphGlobalID

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

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

在 SQL 管理工作室中像魅力一样工作

我试过这个:

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

试图转换它,但我认为它作为字符串到达​​ SQL 服务器

$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();

【问题讨论】:

    标签: laravel laravel-blade


    【解决方案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();
    

    【讨论】:

    • 当你回答时,我只是在尝试查询的原始部分哈哈,仅此部分我就有 4 个小时......非常感谢老兄。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 2016-11-26
    相关资源
    最近更新 更多