首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将数组插入数据库?Laravel Php

如何将数组插入数据库?Laravel Php
EN

Stack Overflow用户
提问于 2020-02-17 17:27:21
回答 1查看 571关注 0票数 2

这可能是一个与这里已经问到的关于将数组插入数据库的问题不同的问题,但我的问题完全不同。

下面是代码:

代码语言:javascript
运行
复制
public function something(Request $request)
{
  $id = $request ->id;
  $name = $request->name;
  $money = $request ->money;

  $data = array(
    'name' => $name, 
    'money' => $money,
  );

  $z = User::where('id',$id)
    ->select('name','money')
    ->first();

  $data2 = array(
    'name' => $z->name,
    'money' => $z->money,
  );

  $diff = array_diff($data,$data2);
  $diff_name = array_keys($diff);
  $diff_values = array_values($diff);
  for ($i = 0; $i < count($diff_name); $i++) {
    $z->$diff_name[$i] = $diff_values[$i];
    $z->save();
  }
  return 'Success';
}

型号:

代码语言:javascript
运行
复制
class User extends Model
{
    protected $table = 'users';
    protected $fillable = ['name','money'];
    public $timestamps = false;
}


$data:
array(2) { ["name"]=> string(9) "Somewhere" ["money"]=> string(7) "5123.00"}

 $data2:
array(2) { ["name"]=> string(8) "Anywhere" ["money"]=> string(7) "5000.00"}

因此,我使用name($diff_name) array_diff来确定用户输入的值是否等于数据库中的原始值,如果值有差异,则获取列,然后插入新的value($diff_value).我是这样做的,因为为了历史日志的目的,我需要$diff_name的值。但是,我得到了这个错误Array to string conversion,谢谢提前。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-17 23:27:25

有几个内置的、雄辩的方法,您可以实现。

代码语言:javascript
运行
复制
    public function something(Request $request)
    {
      $z = User::where('id',$request->id)
        ->select('name','money')
        ->first(); // You could also use '->firstOrFail()' if you want to stop execution if a model was not retrieved. 

      $z->fill([
        'name' => $request->name,
        'money' => $request->money,
      ]);


      $diff = array_keys($z->getDirty());

      $z->save()'

      return 'Success';
    }

$model->firstOrFail()

可用于停止执行,以防止错误试图操作未从数据库检索的模型。

$model->fill()

这可以用于传递要更新的值数组。

$request->只(‘name’,'money)

与其将数组传递给$model->fill(),您还可以使用此方法。

$model->getDirty()

在更改模型属性之后(在保存它之前),您可以使用它获得一个关联数组,该数组包含已更改的属性和相应值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60267629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档