Laravel在函数中没有参数

时间:2019-02-01 15:06:50

标签: javascript ajax laravel api fetch

我正在使用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)); 
}

1 个答案:

答案 0 :(得分:2)

在Laravel Mass Assignment中,您将需要在模型上指定可填充或受保护的属性,因为默认情况下,所有Eloquent模型都可以防止大规模分配。

    class Flight extends Model
    {
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['name'];
   }