无法在LARAVEL控制器中更新数据

时间:2020-01-31 07:11:34

标签: laravel

我无法使用邮递员将数据更新到数据库,即时通讯成功,但是数据库中的数据未更新。

这是我在控制器中的功能:

public function update(Request $request, $id) {
            $dbelicpkb = DBeliCPKB::find($id);
            if(is_null($dbelicpkb)) {
                return response()->json('Spesifikasi Not Found', 404);
            }
            if($request->tanggal != $dbelicpkb["Tanggal"]){
                $dbelicpkb["Tanggal"] = $request->tanggal;
            }
            if($request->noSuplier != $dbelicpkb["No Suplier CPKB"]){
                $dbelicpkb["No Suplier CPKB"] = $request->noSuplier;
            }
            if($request->kodeBarang != $dbelicpkb["Kode Barang CPKB"]){
                $dbelicpkb["Kode Barang CPKB"] = $request->kodeBarang;
            }
            if($request->jumlah != $dbelicpkb["Jumlah"]){
                $dbelicpkb["Jumlah"] = $request->jumlah;
            }
            if($request->noLP != $dbelicpkb["No LP"]){
                $dbelicpkb["No LP"] = $request->noLP;
            }
            if($request->noBet != $dbelicpkb["No Bet"]){
                $dbelicpkb["No Bet"] = $request->noBet;
            }
            if($request->noFaktur != $dbelicpkb["No Faktur"]){
                $dbelicpkb["No Faktur"] = $request->noFaktur;
            }
            if($request->status != $dbelicpkb["Status"]){
                $dbelicpkb["Status"] = $request->status;
            }
            $success = $dbelicpkb->save(); 

这是我尝试使用POSTMAN时的结果

[
    "updated",
    {
        "Tanggal": "2020-01-31 00:00:00",
        "No Bukti CPKB": "2001001",
        "No Suplier CPKB": "300001",
        "Kode Barang CPKB": "1010",
        "Jumlah": "20",
        "No LP": "P2001001",
        "No Bet": "101010",
        "No Uji": "UP2001001",
        "No Faktur": "1010",
        "Status": "Belum Diuji"
    },
    true,
    200
]

结果是成功,但我的数据库中什么也没发生

这是我的路线

Route::post('dbelicpkbs/update/{id}', 'DBeliCPKBController@update');

这是我的模特

class DBeliCPKB extends Model
{
     /**
     * @var string
     */
    protected $table = 'dbelicpkb';
    protected $primaryKey = 'no uji';
    /**
     * @var array
     */
    protected $guarded = [];

    public $timestamps = false;

    public function HBeliPembelians()
    {
        return $this->belongsTo(HBeliPembelian::class,'No Bukti');
    }

}

2 个答案:

答案 0 :(得分:0)

首先,在列名中保留空格是非常不好的做法。

您必须使用箭头设置给定模型实例的属性:

public function update(Request $request, $id) {
    $dbelicpkb = DBeliCPKB::find($id);
    if(is_null($dbelicpkb)) {
        return response()->json('Spesifikasi Not Found', 404);
    }
    if($request->tanggal != $dbelicpkb->{'Tanggal'}){
        $dbelicpkb->{'Tanggal'} = $request->tanggal;
    }
    if($request->noSuplier != $dbelicpkb->{'No Suplier CPKB'}){
        $dbelicpkb->{'No Suplier CPKB'} = $request->noSuplier;
    }
    if($request->kodeBarang != $dbelicpkb->{'Kode Barang CPKB'}){
        $dbelicpkb->{'Kode Barang CPKB'} = $request->kodeBarang;
    }
    if($request->jumlah != $dbelicpkb->{'Jumlah'}){
        $dbelicpkb->{'Jumlah'} = $request->jumlah;
    }
    if($request->noLP != $dbelicpkb->{'No LP'}){
        $dbelicpkb->{'No LP'} = $request->noLP;
    }
    if($request->noBet != $dbelicpkb->{'No Bet'}){
        $dbelicpkb->{'No Bet'} = $request->noBet;
    }
    if($request->noFaktur != $dbelicpkb->{'No Faktur'}){
        $dbelicpkb->{'No Faktur'} = $request->noFaktur;
    }
    if($request->status != $dbelicpkb->{'Status'}){
        $dbelicpkb->{'Status'} = $request->status;
    }
    $success = $dbelicpkb->save(); 
}

还要确保已在模型的$fillable属性中分配了该列:

public $fillable = [
    'No LP',
    'No Bet'
    ...
];

或者通过在模型中放置protected $guarded = [];来填充所有内容

希望这个答案对您有帮助。

答案 1 :(得分:0)

尝试:

方法和编码似乎有问题。

带有x-www-form-urlencoded的PUT

应该有帮助。