【问题标题】:yii2 save, check if exist, if yes give id back, if not, create (and give id back)yii2 保存,检查是否存在,如果存在则返回 id,如果不存在,则创建(并返回 id)
【发布时间】:2016-01-18 06:16:26
【问题描述】:

我想知道yii2中是否有一个类似于save()的函数,它会做什么:检查给定的记录是否存在于具有这些属性的db中,如果是,它会返回id,如果不是,它会创建它并返回 id。我认为这会很酷。大概有这样的事情。你能帮我在哪里找到它吗?谢谢!

【问题讨论】:

  • 取决于您的独特列。发布您的数据库字段以及除了主键之外哪些字段是唯一的。

标签: save yii2 exists


【解决方案1】:

我认为没有那个特定功能,但除了保存之外,您还可以使用exists

$exists = ModelName::find()->where( [ 'id' => 1 ] )->exists();

if($exists) {
  //it exists

} else {
  //doesn't exist so create record

}

【讨论】:

  • 谢谢!又好又干净!
【解决方案2】:

BaseActiveRecord 类中的方法save() 具有类似的功能 但它返回一个布尔值是否保存成功。 调用 save() 后可以获取主键值

$model->getPrimaryKey();

【讨论】:

    【解决方案3】:
    $model = ModelName::findOne(1) ?? new ModelName();
    //or 
    $model = ModelName::find()->where(['id' => 1])->one() ?? new ModelName();
    
    1. 如果 'id' 是主键
    2. 如果不是

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 2012-04-20
      • 2014-04-28
      • 2013-08-14
      • 1970-01-01
      • 2020-02-20
      相关资源
      最近更新 更多