【问题标题】:Laravel updateOrCreate ignoring some fieldsLaravel updateOrCreate 忽略某些字段
【发布时间】:2020-10-15 14:25:37
【问题描述】:

我已经花了好几个小时试图找出这行代码的问题:

    ContentSetting::updateOrCreate(
        ['content_id' => $this->id, 'key' => 'max_width'],
        ['value' => $value]
    );

它应该检查我的 content_settings 表中是否存在具有特定内容 id 和键“max_width”的行,如果是则更新它,如果不创建它。它用于模型修改器,因此是 $this。

无论如何,无论我尝试输入什么值,这总是会导致执行此 mysql 查询(仅使用不同的时间戳):

insert into `content_settings` (`content_id`, `updated_at`, `created_at`) values (2, '2020-10-15 14:07:00', '2020-10-15 14:07:00')

...只需使用空键和值创建新行。任何人都可以发现错误吗?或者这是某个地方的错误? “key”是保留字的东西?

【问题讨论】:

  • ContentSetting 模型中的 $fillable 怎么样?是否包含键和值?
  • 噢!我知道这将是非常明显的事情。当然!非常感谢!
  • 不客气,我将添加我的答案,以便我们可以关闭此问题

标签: laravel eloquent laravel-8


【解决方案1】:

您应该在模型的 $fillable 数组中设置要在批量赋值中使用的字段:

class ContentSetting extends Model
{
  protected $fillable = ['content_id','key','value'];
}

【讨论】:

  • 仅作记录:如果 Laravel 以某种方式表明这一点,那就太好了。本来可以节省我一两个小时...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
相关资源
最近更新 更多