簡體   English   中英

如何在 laravel 中設置要插入和更新的同時數據

[英]how to condition same time data to insert and update in laravel

我會嘗試如果在今天的日期,任何行插入然后更新值使用 id 如果沒有任何行今天的日期然后插入一個新行。 但問題是更新值有效但未插入新行消息是“嘗試獲取非對象的屬性'日期'”

public function present($id){
  $user = User::find($id);
  $date = date('Y-m-d');
  $id = $user->id;
  $Attendance= Attendance::where('User_A_ID','=',$id)->first();
  
  if($Attendance->Date == $date){
        $Attendance->A_sts = '0';
        $Attendance->Date = $date;
        $Attendance->User_A_ID = $user->id;
        $Attendance->save();
  } else {
        $Attendance= new Attendance();
        $Attendance->A_sts = '0';
        $Attendance->Date = $date;
        $Attendance->User_A_ID = $user->id;
        $Attendance->save();
  }
  return back();
}

如果我對您的理解正確,您想要更新屬於該用戶的現有出勤或在用戶沒有出勤時創建新出勤。

您可以簡化代碼:

public function present($id)
{
    $user = User::findOrFail($id);
    $date = date('Y-m-d');

    $Attendance = Attendance::firstOrNew(['User_A_ID' => $user->id, 'Date', $date]);

    $Attendance->User_A_ID = $user->id;
    $Attendance->Date = $date;
    $Attendance->A_sts = '0';
    $Attendance->save();

    return back();
}

使用findOrFail檢查用戶是否存在,然后使用firstOrNew檢索今天的現有出勤或創建一個新的實例,這樣您就可以擺脫您的if語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM