如何使用 db::raw 在 Laravel Fluent 上更新查询?

laravelphpserver side programming更新于 2025/7/4 5:52:17

当您想要在 Fluent 查询构建器中测试或使用任意字符串时,可以使用 db::raw。

要使用 db::raw,您必须使用 DB Facade 类 -

use Illuminate\Support\Facades\DB;

以下是一些展示 DB:raw() 用法的示例。

示例 1

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class UserController extends Controller{ public function index() { DB::table('users') ->where('id', 2) ->update(['name' =>DB::raw("'Heena Khan'")]); $user = DB::table('users')->find(2); print_r($user); } }

由于我们希望将字符串传递给 name,因此我们在 DB::raw 中使用字符串,如下所示 -

update(['name' => DB::raw("'Heena Khan'")]);

输出

上述代码的输出为 -

stdClass Object(
   [id] => 2
   [name] => Heena Khan
   [email] => J17NQEuksw@gmail.com
   [email_verified_at] =>
   [password] => hkGekGafje
   [remember_token] =>
   [created_at] =>
   [updated_at] =>
)

示例 2

另一个示例是在 DB::update 中使用 DB::raw(),如下所示 -

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class UserController extends Controller{ public function index() { $name = '"Seema"'; $test = DB::update(DB::raw('UPDATE users SET name='.$name.' WHERE id =3')); $user = DB::table('users')->find(3); print_r($user); } }

输出

上述代码的输出如下 -

stdClass Object(
   [id] => 3
   [name] => Seema
   [email] => SZJj8osSc1@gmail.com
   [email_verified_at] =>
   [password] => pDqluHE2x8
   [remember_token] =>
   [created_at] =>
   [updated_at] =>
)

示例 3

我们正在利用DB::statement来执行查询-

<?php namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Support\Str; use Illuminate\Support\Facades\DB; class UserController extends Controller{ public function index() { $name = '"Neha Singh"'; $test = DB::statement(DB::raw('UPDATE users SET name='.$name.' WHERE id =4')); $user = DB::table('users')->find(4); print_r($user); } }

输出

上述代码的输出是 −

stdClass Object(
   [id] => 4
   [name] => Neha Singh
   [email] => KBc9tUG3pp@gmail.com
   [email_verified_at] =>
   [password] => jyfM24HRSd
   [remember_token] =>
   [created_at] =>
   [updated_at] =>
)

示例 4

在下面的示例中,DB::raw 在 DB::select 内部使用,并且上述代码的输出如下所示 -

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Str; use Illuminate\Support\Facades\DB; class UserController extends Controller{ public function index() { $name = '"Neha Singh"'; $test = DB::select(DB::raw('SELECT * FROM users WHERE id=1')); print_r($test); } }

输出

Array(
   [0] => stdClass Object(
      [id] => 1
      [name] => Siya Khan
      [email] => zt6EovRjV7@gmail.com
      [email_verified_at] =>
      [password] => yhka61wZeS
      [remember_token] =>
      [created_at] =>
      [updated_at] =>
   )
)

相关文章