Я пытаюсь обновить один столбец таблицы сообщений, и у меня есть следующий код:
public function messageSeen(Request $request){
$data = Message::find($request->id);
$success = Message::where('id', $request->id)->update(array('is_seen' => 1));
if($success){
return response()->json(['status'=>'success'], 200);
} else {
return response()->json(['status'=>'Data not updated'], 404);
}
}
Я получаю ответ Данные не обновлены.Если вы спросите, существует ли столбец is_seen ?тогда да, это так.Даже я пытался получить данные с идентификатором $request->id
, он дает правильные данные.Интересно, почему данные не обновляются?Правильно ли я делаю обновление столбца или есть выход для обновления столбца другим способом?
Я попробовал другой способ, подобный следующему:
public function messageSeen(Request $request){
$id = $request->id;
$result = Message::find($id);
dd($result->message);
$data = array();
$data['is_seen'] = 1;
$data['message'] = $result->message;
$data['user_id'] = $result->user_id;
$data['conversation_id'] = $result->conversation_id;
$this->messages->fill($data);
$success = $this->messages->save();
if($success){
return response()->json(['status'=>'success'], 200);
} else {
return response()->json(['status'=>'Data not updated'], 404);
}
}
Но здесь я получаю неожиданную вещь с этим методом.Здесь я могу сделать dd ($ result) и получить данные, подобные этому:
#attributes: array:9 [
"id" => 22
"message" => "How are you?\r\n"
"is_seen" => 0
"deleted_from_sender" => 0
"deleted_from_receiver" => 0
"user_id" => 2
"conversation_id" => 1
"created_at" => "2019-09-29 03:42:39"
"updated_at" => "2019-09-29 03:42:39"
]
однако, если я попытаюсь сделать dd ($ result-> message), то получу ноль!Где я делаю что-то не так?
Я попробовал следующий код:
public function messageSeen(Request $request){
$id = $request->id;
$result = Message::find($id);
$data = array();
$data['is_seen'] = 1;
$data['message'] = $result[0]['message'];
$data['user_id'] = $result[0]['user_id'];
$data['conversation_id'] = $result[0]['conversation_id'];
$this->messages->fill($data);
$success = $this->messages->save();
if($success){
return response()->json(['status'=>'success'], 200);
} else {
return response()->json(['status'=>'Data not updated'], 404);
}
}
, и он сработал, но вместо обновления он добавляет новый столбец при просмотре сообщения.Но сначала я не понимаю, почему я должен делать $ result [0] ['key'] в первую очередь.