Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将值绑定到DB::raw以进行更新_Php_Laravel_Pdo_Eloquent - Fatal编程技术网

Php 将值绑定到DB::raw以进行更新

Php 将值绑定到DB::raw以进行更新,php,laravel,pdo,eloquent,Php,Laravel,Pdo,Eloquent,我想将值绑定到DB::raw(…)查询部分,但只用于更新,因此我既不想select(DB::raw(“…”),[…])也不想whereRaw(“…”,[…])也不想setBindings([…]) 例如,我希望能够将值绑定到以下DB::raw: $user = User::find(3); $newCoordinates = ['coordinates' => DB::raw("GeomFromText('POINT(:lat :lng)')")]; $user->update($n

我想将值绑定到
DB::raw(…)
查询部分,但只用于更新,因此我既不想
select(DB::raw(“…”),[…])
也不想
whereRaw(“…”,[…])
也不想
setBindings([…])

例如,我希望能够将值绑定到以下
DB::raw

$user = User::find(3);
$newCoordinates = ['coordinates' => DB::raw("GeomFromText('POINT(:lat :lng)')")];
$user->update($newCoordinates);
如果对
update()
函数不起作用,是否有办法对
save()
函数起作用


谢谢您的帮助。

不是很优雅,但它可以:

$user = User::find(3);
$newCoordinates = ['coordinates' => DB::raw("GeomFromText('POINT(?, ?)')")];
$user->newQuery()->setBindings([$lat, $lng], 'join')
    ->whereKey($user->id)->update($newCoordinates);

如果你想更新更多的属性,你必须在
'coordinates'

之后添加它们。你可以手动添加绑定,但是在浮点和整数的情况下,我就不麻烦了。只需将*lat和lng转换为一个float,并将它们直接插入原始表达式。@Devon您可能是对的,我已经有了检查坐标的验证规则(
required | numeric | min:-85 | max:85
表示纬度,
required | numeric | min:-180 | max:180
)我甚至把整个代码放在一个try/catch块中。你是否使用/需要在timestamp更新的
u?@JonasStaudenmeir是的,但我更改了它的名称。我假设您会告诉我检索PDO实例并使用它?您写下您不想要
setBindings()
:您不想使用它(为什么?),还是您认为您不能使用它?