![](/img/trans.png)
[英]How to keep previously inserted data if I send blank data while updating through UpdateOrCreate method of 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.