当前位置: 首页 > 知识库问答 >
问题:

在Laravel中更新数据到db

赵飞雨
2023-03-14

我有一个问题,而更新数据到laravel数据库。通常情况下,数据通过存储功能(POST请求)插入到数据库中。但是更新POST请求不会对数据库进行更新。我的密码是

routes.php

Route::resource('Customer','CustomerDetailController');
Route::get('/', function () {
return view('welcome');
});

定制etail.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class CustomerDetail extends Model
{
//

public $table = "customer_details";
protected $fillable = [
'Name', 'Contact_Number','Address','NoOfCans','Price'
];
}

控制器CustomerDetailController。php

<?php

namespace App\Http\Controllers;
use App\CustomerDetail;

use Illuminate\Http\Request;

use App\Http\Requests;

class CustomerDetailController extends Controller
{
/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    //
    $Customers=CustomerDetail::all();
    if($Customers){

    $response = [
        'msg' => 'Customer Found',
        'Customer' => $Customers
    ];
    return response()->json($response, 201);
  }
  else {
    $response=[
      'msg'=>'No Customer Found',
    ];
    return response()->json($response, 404);
  }
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    //
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    //

    $this->validate($request, [
        'Name' => 'required',
        'Contact_Number' => 'required',
        'Address' => 'required',
        'NoOfCans' => 'required',
        'Price' => 'required',
    ]);

    $Name = $request->input('Name');
    $Contact_Number = $request->input('Contact_Number');
    $Address = $request->input('Address');
    $NoOfCans = $request->input('NoOfCans');
    $Price = $request->input('Price');

    $CustomerDetail = new CustomerDetail([
        'Name' => $Name,
        'Contact_Number' => $Contact_Number,
        'Address' => $Address,
        'NoOfCans' => $NoOfCans,
        'Price' => $Price
    ]);
    if ($CustomerDetail->save()) {

        $response = [
            'msg' => 'Customer Created',
            'Customer' => $CustomerDetail
        ];
        return response()->json($response, 201);
    }
    $response = [
        'msg' => 'An Error Occured',
    ];
    return response()->json($response, 502);


}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    //

    $Customer=CustomerDetail::find($id);
    if($Customer){

    $response = [
        'msg' => 'Customer Found',
        'Customer' => $Customer
    ];
    return response()->json($response, 201);
  }
  else {
    $response=[
      'msg'=>'Customer Not Found',
    ];
    return response()->json($response, 404);
  }


}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    //
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    //
    $this->validate($request, [
        'Name' => 'required',
        'Contact_Number' => 'required',
        'Address' => 'required',
        'NoOfCans' => 'required',
        'Price' => 'required',
    ]);


    $CustomerUpdate = CustomerDetail::find($id);
    $CustomerUpdate->Name = $request->input('Name');
    $CustomerUpdate->Contact_Number = $request->input('Contact_Number');
    $CustomerUpdate->Address = $request->input('Address');
    $CustomerUpdate->NoOfCans = $request->input('NoOfCans');
    $CustomerUpdate->Price = $request->input('Price');

    if ($CustomerUpdate->save()) {

        $response = [
            'msg' => 'Customer Updated',
            'Customer' => $CustomerUpdate
        ];
        return response()->json($response, 201);
    }
    $response = [
        'msg' => 'An Error Occured',
    ];
    return response()->json($response, 502);

}

}

当我发出存储为的后请求时,数据会被插入

{
"Name":"MRK",
"Contact_Number":"1234567890",
"Address":"newyork",
"NoOfCans":"3",
"Price":"20"
}

带输出

{
 "msg": "Customer Created",
 "Customer": {
 "Name": "MRK",
 "Contact_Number": "1234567890",
 "Address": "newyork",
 "NoOfCans": "3",
 "Price": "20",
 "updated_at": "2016-11-20 17:17:55",
 "created_at": "2016-11-20 17:17:55",
 "id": 4
}
}

但是当我尝试用PUT或PATCH请求更新相同的数据时

输入

{
    "Name":"MRK",
    "Contact_Number":"9876543210",
    "Address":"Chennai",
    "NoOfCans":"2",
    "Price":"20"
}

我得到JSON响应作为更新,但我没有看到数据库中的值得到更新

{
  "msg": "Customer Updated",
  "Customer": {
    "ID": 4,
    "created_at": "2016-11-20 17:17:55",
    "updated_at": "2016-11-20 17:20:44",
    "Name": "MRK",
    "Contact_Number": "9876543210",
    "Address": "Chennai",
    "NoOfCans": "2",
    "Price": "20"
  }
}

数据库包含最初插入的值。未将更新的值插入数据库

在此输入图像描述

更新代码

public function update(Request $request, $id)
 {
    //
    $this->validate($request, [
        'Name' => 'required',
        'Contact_Number' => 'required',
        'Address' => 'required',
        'NoOfCans' => 'required',
        'Price' => 'required',
    ]);


    $CustomerUpdate = CustomerDetail::find($id);
    $CustomerUpdate->Name = $request->input('Name');
    $CustomerUpdate->Contact_Number = $request->input('Contact_Number');
    $CustomerUpdate->Address = $request->input('Address');
    $CustomerUpdate->NoOfCans = $request->input('NoOfCans');
    $CustomerUpdate->Price = $request->input('Price');

    if ($CustomerUpdate->save()) {

        $response = [
            'msg' => 'Customer Updated',
            'Customer' => $CustomerUpdate
        ];
        return response()->json($response, 201);
    }
    $response = [
        'msg' => 'An Error Occured',
    ];
    return response()->json($response, 502);

}

共有1个答案

丌官和泰
2023-03-14

问题出在模型上。我没有提到主键在我的模型所以数据库不更新

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class CustomerDetail extends Model
{
//

public $table = "customer_details";
Protected $primaryKey = "ID";
protected $fillable = [
'Name', 'Contact_Number','Address','NoOfCans','Price'
];
}
 类似资料:
  • 嗨,我已经搜索并试图解决这个问题,但未能找到解决方案,抱歉占用了你的时间。我在laravel中插入一组数据与查询生成器一次插入多个数据。 有没有办法检查表中的值是否存在,然后更新,否则插入。如果所有数据成功更新或插入,我想从查询结果中返回或。我想解决它与laravel查询生成器。谢啦

  • 嘿,伙计们,我正在使用Laravel5.7,我正试图发出一个ajax post请求来更新我的数据库。ajax将基于checkbox on change函数发布。例如,如果我关闭复选框,它将发送一个请求,并将我的状态更新为my表中的。尝试之后,我出现了一个错误。有人注意到我做错了什么吗?抱歉,如果我的代码中有一些错误的代码或语法,因为我对Ajax非常陌生。任何帮助都将不胜感激。 AJAX 路线 控制

  • 如何使用复选框使用Ajax仅更新表的一列? 我想使用复选框并更新我的列,值将是或。如果选中值为,否则。 是我列的名称 是我的行id 控制器功能 不知道怎么处理这个零件! 我的最新代码: 我的开关按钮未按预期工作,对于值打开,对于值关闭,开关始终处于关闭状态 问题是为"什么是PHP运算符"?"":"打电话来,他们是做什么的?"解释了我必须使用

  • 我有这部分代码: 现在想返回插入或更新的数据作为响应,但是在谷歌上看到很多帖子后,所有尝试都失败了,我怎么能这样做?没有上次插入的id 但返回布尔值: 如何在雄辩的ORM laravel最后插入id 大多数主题想要返回,但我想要所有数据。

  • 我正在更新APIendpoint中的数据。正如我所说,我使用表单请求验证将验证与控制器分开。 这适用于存储请求。 但是,当我试图更新下面提到的单个数据时,响应返回以下响应数据。 因为,数据已经存储在数据库中。当我发送更新数据的请求时...应该返回更新的数据。但是,它不返回。 需要帮助来解决这个问题。 正文中的JSON数据: 当前响应: 问题要求: 更新:

  • 我有一个PHP laravel projekt,我需要添加一个字段到一个/多个模型(雄辩)。我在php方面没有太多的经验,以前从未尝试过laravel。 现在这个班看起来像这样 我想添加一个名为“level”的字符串字段,但我不知道如何操作。如果我先在MySQL中创建字段,然后更新模型,如果我更新模型,然后Laravel为我更新MySQL? 我期待着听到我能做什么:)