Laravel 8 - MS SQL - 查询生成器 - 使用 DB Raw。尝试使代码正确,使其像工作的 MSSQL 代码一样工作
Posted
技术标签:
【中文标题】Laravel 8 - MS SQL - 查询生成器 - 使用 DB Raw。尝试使代码正确,使其像工作的 MSSQL 代码一样工作【英文标题】:Laravel 8 - MS SQL - Query Builder - using DB Raw. Trying to get the code right to make it work like the working MSSQL code 【发布时间】:2021-11-17 19:54:09 【问题描述】:如何在 Laravel 中编写此代码以使下面的查询正常工作?
工作查询:
select
fname,
lname,
title,
case when picture IS NULL then 'https://www.aaa.com/images/interior/bench2.jpg' else
'https://www..aaa.com/images/staff/' + REVERSE(LEFT(REVERSE(picture), CHARINDEX('/',REVERSE(picture)) - 1)) end as picture
from Staff
我的许多尝试之一
$faculties =
DB::table('tblFaculty')->
select(
['Fname',
'Lname',
'title',
DB::raw('(case when picture IS NULL then "https://www2.aaa.com/images/interior/bench2.jpg"
else "https://www2.aaa.com/images/facultystaff/" end) as picture')])->get();
dd($faculties);
感谢您的帮助。我已经尽量把问题说清楚了。
【问题讨论】:
我想我已经接近了。我对 CHARINDEX 有疑问,因为它似乎需要 '/' - raw('') 内的单引号尝试转义等。 【参考方案1】:以防万一有人需要这种帮助,这里终于奏效了。
$faculties =
DB::table('tblFaculty')->
select(
['Fname',
'Lname',
'title',
'picture',
DB::raw("(case when (picture IS NULL) then
'https://www.aaa.com/images/interior/bench2.jpg' else
'https://www.aaa.com/images/facultystaff/' + reverse(left(reverse(picture), CHARINDEX('/', REVERSE(picture)) - 1))
end) as pictureUrl")])->get();
dd($faculties);
【讨论】:
以上是关于Laravel 8 - MS SQL - 查询生成器 - 使用 DB Raw。尝试使代码正确,使其像工作的 MSSQL 代码一样工作的主要内容,如果未能解决你的问题,请参考以下文章
我如何将 SQL 原始查询重写为 Laravel 查询生成器