代码之家  ›  专栏  ›  技术社区  ›  Sagar Gautam

如何在update或create函数中查找是否创建或更新了记录?

  •  0
  • Sagar Gautam  · 技术社区  · 6 年前

    我有一个简单的邮寄表格。记录保存到数据库 updateOrCreate 功能。

    我有以下记录要保存,

    1. 用户标识
    2. 产品ID
    3. 回顾
    4. 评级

    提交表格后, user_id product_id 用于检查记录是否存在。如果存在,将更新记录,否则将使用函数创建新记录。

    public function updateOrCreate($input)
    {
        return $this->model->updateOrCreate(['product_id'=> $input['product_id'],'user_id'=>$input['user_id']],['rating'=>$input['rating'],'review'=>$input['review']]);
    }
    

    是否有任何内置方法来查找已创建的新记录或已更新的现有记录?

    任何建议都会受到赞赏。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Namoshek    6 年前

    在雄辩的模型中有一个公共财产叫做 $wasRecentlyCreated . 它被设定 when an insert is performed . 只会是 true 同一请求的插入之后;不用于连续请求。如果已执行更新,则 false .

    请注意,酒店 对于完全相同的模型实例。如果用 Product::find($id) 它将会是 . 如果你打电话怎么办 refresh() 在一个模型上,我很不幸不清楚。

        2
  •  0
  •   jogesh_pi    6 年前

    您需要确定模型或给定属性是否已被修改。和 wasChanged() 方法将有助于确定模型是否更新。

    $model = $this->model->updateOrCreate(['product_id'=> $input['product_id'],'user_id'=>$input['user_id']],['rating'=>$input['rating'],'review'=>$input['review']]);
    
    // It will return true if the record have been modified
    $wasChanged = $model->wasChanged();
    if ( $wasChanged ) {
        // updated
    }
    else {
       // created
    }
    

    希望这对你有帮助。