繁体   English   中英

UpdateOrCreate 不更新数据 - Laravel Eloquent

[英]UpdateOrCreate not updating data - Laravel Eloquent

我是 laravel 的新手。 当我尝试在数据库中更新或创建记录时遇到问题。 我有一个名为 DspAccountFee 的表,其中包含以下列: 在此处输入图像描述

我想在组合不存在时创建 dsp_account_id + screen_type 的记录,如果组合存在则更新。 这是我的代码:(只是尝试更新-> dsp_account_id(5187)+屏幕类型(ctv)的第一行键。但是没有任何改变。

DspAccountFee::updateOrCreate(
                ['dsp_account_id' => $dsp_account_id, 'screen_type' => 'ctv'],
                ['pmp_percent' =>$fields['fee_ctv_pmp_percent'], 'omp_percent' => $fields['fee_ctv_omp_percent']]
                );

当我在 DB 操作之前打印这些值时,它们存在:

\Log::info("dsp_account:");
\Log::info($dsp_account_id);
\Log::info("ctv pmp percent:");
\Log::info($fields['fee_ctv_pmp_percent']);
\Log::info("ctv omp percent:");
\Log::info($fields['fee_ctv_omp_percent']);
\Log::info("app pmp percent:");

在此处输入图像描述

我错过了什么,为什么它不更新数据库? 日志中没有任何内容,也没有例外

这是我在 model 中的方法

protected $fillable = array(
        'dsp_account_id', 'screen_type'
    );

检查相应的 model 并确保这些列存在于 $fillable 属性中。 它应该看起来像这样。

  protected $fillable = [
  'dsp_account_id',
  'screen_type',
  'pmp_percent',
  'omp_percent'
];

您的 updateOrCreate 语法看起来不错。

要更新数据库中的 updated_at 列,您可以使用 touch() 方法:您需要将代码编辑为类似这样

 $foo = DspAccountFee::updateOrCreate([
    'dsp_account_id' => $dsp_account_id,
    'screen_type' => 'ctv'
    ],
    [
    'pmp_percent' => $fields['fee_ctv_pmp_percent'],
    'omp_percent' => $fields['fee_ctv_omp_percent']
    ]);

   $foo->touch();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM