【问题标题】:api laravel not update table update mysqlapi laravel 不更新表更新mysql
【发布时间】:2020-12-20 00:21:01
【问题描述】:

当我去更新数据库上的值并没有改变并且测试失败

我在mysql db上有下图:

   public function up()
        {
            Schema::create('polls', function (Blueprint $table) {
                $table->id();
                $table->integer('idPollEx')->nullable();
                $table->text('param');
                $table->enum('status', ['a', 'b', 'c','d'])->default('a');
            });
        }

功能/exampleTest.php

 $requestSvr1 = [
                "idPollEx" => 1,
                "op" => ["k", "z", "y"]
            ];

 $response = $this->put('/api/update',$requestSvr1);

 //get value elaborate by pull
 $dataDbTest = $this->get('/api/');


 //check field process_status == processing
 $this->assertSame('b',$dataDbTest[0]['status']);

PollsController.php

public function pull(Request $requestSvr1)
    {
        //get data
        $requestSvr1 = $requestSvr1->all(); 

        //order
        $query= DB::table('polls')->whereIn('k', $requestSvr1['op'])->limit(1)->get();

        //assignment of values
        $query->update(['idPollEx' => $requestSvr1['idPollEx']]);
        $query->update(['update' => 'k']);
        $query->update(['status' => 'b']);
        return response()->json($query, 200); 
    }
    

【问题讨论】:

  • 如果你想稍后更新数据库中的对象,你不能DB::table('polls')->whereIn('k', $requestSvr1['op'])->limit(1)->get();这个。
  • 你在哪里有一个名为k的字段?
  • 可以看到$requestSvr1

标签: mysql laravel api


【解决方案1】:

检查模型中的 $fillable 属性

【讨论】:

  • 我尝试输入 fillable = [] 但字段并没有更新
  • 您应该将可以使用已设置为 $fillable 属性的 Model::Update({'array_of_columns'}) 更新的列放入模型中
【解决方案2】:

这里的代码只是数据库查询,不是laravel eloquent ORM。

$query= DB::table('polls')->whereIn('k', $requestSvr1['op'])->limit(1)->get();

所以,你需要这样使用:

$poll = Poll::whereIn('k', $requestSvr1->op)->first();

$poll->status = 'b';

$poll->idPollEx = $requestSvr1->idPollEx;

$poll->save();
class Poll extends Model { protected $fillable=[ 'param', 'status', 'idPollEx' ]; }

【讨论】:

  • 类轮询扩展模型 { protected $fillable=[ 'param', 'status' ]; }
猜你喜欢
  • 1970-01-01
  • 2016-05-29
  • 1970-01-01
  • 2013-02-22
  • 2019-06-11
  • 1970-01-01
  • 2011-01-04
  • 2013-08-30
  • 2023-03-28
相关资源
最近更新 更多