sql-server - Laravel:带有绑定参数的原始查询的空结果
问题描述
我需要使用 SQL Server 中的辅助连接数据库在 laravel 中获取一些数据。
我的代码是这样的:
DB::connection('sqlsrv')->enableQueryLog();
$clstamp = DB::connection('sqlsrv')
->table('cl')
->select('clstamp','ncont','no')
->where("ncont", "507751167")
->get();
dd(DB::connection('sqlsrv')->getQueryLog(),$clstamp );
结果是:
当我删除“->where”行时,我的数据就会出现。我确定我的 SQL 查询没问题,我在 SQL Server Management Studio 中尝试过。
我究竟做错了什么?使用不受我的 laravel 结构/迁移控制的模型创建查询和绑定的最佳方法是什么?这个 SQL Server 数据库是外部的,我只需要获取数据。
我的简单模型:
class PHC_cl extends Model
{
//
protected $connection= 'sqlsrv';
protected $guarded = [];
protected $primaryKey = 'clstamp';
protected $table = 'cl';
}
如果我删除 ->where() 行,它会输出数据 ok - array->663 itens data ok
我已经尝试过使用 whereRaw,将条件放在“....”之间,但总是返回空。
我的其他方法代码:
DB::connection('sqlsrv')->enableQueryLog();
$sql = "
SELECT clstamp,ncont,no
FROM CL
WHERE ncont like :ncont
";
$clstamp = DB::connection('sqlsrv')->select(DB::raw($sql),[
'ncont' => $data['nif']
]);
dd(DB::connection('sqlsrv')->getQueryLog(),$clstamp );
我的 $data['nif] 是 '507751167' 结果是这样的:DB:raw的结果
解决方案
将您的代码更新为:
DB::connection('sqlsrv')->enableQueryLog();
$clstamp = DB::connection('sqlsrv')
->table('cl')
->select('clstamp','ncont','no')
->where('ncont','=', '507751167')
->get();
dd(DB::connection('sqlsrv')->getQueryLog(),$clstamp );
推荐阅读
- f# - 如何在 F# 中高效地创建倒序列表
- ubuntu - 如何使用“brew”在 ubuntu 上安装 gcc
- javascript - 为什么一个简单的 JS 自动点击器会破坏页面?
- binding - 如何根据可选的 Binding 在此 SwiftUI @ViewBuilder 中初始化 Bool ?
- javascript - 在反应计算器中修剪前导零
- laravel - 如何在 Laravel 5.2.45 中获取 POST 参数
- scala - 在 scala shapeless 中,如何在另一个方法中使用 Record.updateWith?
- node.js - 如何解决电子汇总应用程序中的“Node.js 内置插件缺少垫片”?
- vue.js - 什么时候键在 Vue 中有用?
- typescript - 将 observable 传递给subscriber.next 并避免嵌套