Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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
Sql 拉威尔8号线路返回404_Sql_Laravel_Eloquent_Laravel 8 - Fatal编程技术网

Sql 拉威尔8号线路返回404

Sql 拉威尔8号线路返回404,sql,laravel,eloquent,laravel-8,Sql,Laravel,Eloquent,Laravel 8,我正试图通过API更新数据库中的数据,但它返回错误404,在postman中找不到 api.php // PUT update citizen from NIC Route::put('updateCitizen/{nic}',[CitizensController::class, 'updateCitizen'] ); controller.php namespace App\Http\Controllers; use Illuminate\Http\Request; use Ap

我正试图通过API更新数据库中的数据,但它返回错误404,在postman中找不到

api.php

    // PUT update citizen from NIC
Route::put('updateCitizen/{nic}',[CitizensController::class, 'updateCitizen'] );
controller.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Citizen as ModelsCitizen;
use DB;
use Illuminate\Support\Facades\DB as FacadesDB;

class CitizensController extends Controller
{
    public function updateCitizen(Request $request, $nic)
    {

        $citizen = FacadesDB::table('citizens')
            ->where('nic', '=', $nic)
            ->update(['options->enabled', true]);

        return response()->json($citizen);
    }
}

在你的控球器顶部放置:

use Illuminate\Support\Facades\DB;
然后使用:

$citizen = DB::table('citizens')
         ->where('nic',$nic)
         ->update(['options->enabled', true]);

您可以按如下方式更改API路由吗

Route::put('update-citizen/{nic}',[CitizensController::class, 'updateCitizen']);
并运行以下命令

php artisan route:cache

并尝试使用以下URL-
{baseUrl}/api/update citizen/{an existing nic}

问题出在更新查询中。 在查询where时

->update(['options->enabled', true]);
必须更改为

    ->update($request->all());

将uri中的所有Vlaue更新到数据库列。

为什么不使用替代的api资源方法,看起来写入imo要快得多

https://laravel.com/docs/8.x/eloquent-resources

否则,请使用更多类似于”的“
”作为where子句的字符串运算符。现在它给我一个不同类型的错误(500内部服务器错误)照亮\Database\QueryException:SQLSTATE[42S22]:未找到列:1054“字段列表”中的未知列“0”(SQL:update
citizens
set
0
=options->enabled,
1
=1其中
nic
=97017309V)在文件中,您的this行出现了一些错误--->update(['options->enabled',true]);它可以是->更新(['field_name',true]);。确保您的数据库表中有该字段。是@lyaturai您是正确的!这就是问题所在。谢谢