我正在使用API和Ajax制作一个简单的聊天应用程序;问题是当我发出Ajax请求并将聊天对话存储在数据库中时,如果对话存在,则该消息只是保存该消息。 但是,当我保存消息时,请求不会带有ID,但是在保存聊天时,它将带有ID。
Laravel
public function storeMsj(Request $req)
{
$existChat = $this->existsChat($req->id);
if ($existChat == 0) {
Chat::create([
'user' => $req->id,//here take the request
'read' => 0,
]);
Message::create([
'message_content' => $req->msj,
'from' => $req->id,//here not take the request
'to' => 1,
]);
} else {
Message::create([
'message_content' => $req->msj,
'from' => $req->id,
'to' => 1,
]);
}
return Response::json($req->id);//the response show correctly the request
}
JS
function storeMsj(){
let msj = document.querySelector('.msg').value;
let id = idUser.firstElementChild.innerHTML;
fetch('/api/storeMsj',{
method: 'POST',
headers:{
'Accept': 'application/json, text/plain, */*',
'Content-type': 'aplication/json'
},
body: JSON.stringify({
msj: msj,
id: id
}),
})
.then(res => res.json())
.catch(error => console.error('Error:', error))
.then(response => console.log('Success:', response));
}
答案 0 :(得分:2)
在Laravel Mass Assignment中,您将需要在模型上指定可填充或受保护的属性,因为默认情况下,所有Eloquent模型都可以防止大规模分配。
class Flight extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['name'];
}