Sql 拉威尔8号线路返回404
我正试图通过API更新数据库中的数据,但它返回错误404,在postman中找不到 api.phpSql 拉威尔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
// 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:updatecitizens
set0
=options->enabled,1
=1其中nic
=97017309V)在文件中,您的this行出现了一些错误--->update(['options->enabled',true]);它可以是->更新(['field_name',true]);。确保您的数据库表中有该字段。是@lyaturai您是正确的!这就是问题所在。谢谢