【问题标题】:post and get on Index controller laravel发布并获取索引控制器 laravel
【发布时间】:2020-10-14 17:12:05
【问题描述】:

当我向索引控制器发出 get 请求时遇到问题,我的想法是当我发布到索引控制器时,它只返回 bible_id 等于请求的“注释”,

路线:

Route::resource('/comentarios', 'ComentariosController', ['except' => ['store']]);
Route::post('/comentarios ', 'ComentariosController@index');
Route::post('/newComentario', 'ComentariosController@new');

请求:

centralComponent.vue

passBibleId(bibleId) {
        this.bibleId = ''
        this.bibleId = bibleId
        console.log(bibleId)
        this.showModal = true

        await axios.post('/comentarios', {bibleId: this.bibleId}).then((response)=> {
            const comentario = response.data;
            console.log('posted', comentario)
        });
    }

commentComponent.vue

await axios.get('/comentarios').then( (response) => {
                console.log('get', response.data)
                this.comentarios = response.data;
            })

控制器:

public function index(Request $request)
    {

        $bibleID = $request->bibleId;



        
        return comentarios::where('user_id', Auth::id())->where('bible_id', $bibleID)->get();
    }

目前,如果我从控制器中删除 where,它会显示数据库中的所有数据,如果我将控制器的 where 条件更改为 return comentarios::where('user_id', Auth::id())->where('bible_id', 1)->get(); 它显示了正确的数据。

当你像这样使用它时的问题

return comentarios::where('user_id', Auth::id())->where('bible_id', $bibleID)->get();

在我的浏览器网络中,post 有数据,但 get 是空的。

【问题讨论】:

    标签: laravel vue.js


    【解决方案1】:

    这是因为您没有在请求await axios.get('/comentarios') 中传递参数。它应该看起来像

    await axios.get('/comentarios', this.bibleID).then( (response) => {
                console.log('get', response.data)
                this.comentarios = response.data;
            })
    

    在您的控制器中,您试图检索 bibleID $bibleID = $request->bibleId;,它是空的。

    【讨论】:

    • 你在谈论请求获取吗?目前如果我return $ request-> bibleId; 它返回我通过请求帖子发送的 id。我想要做的是,在请求获取时,它会给我带来 bibleId 的“过滤”
    • YES 获取请求。此外,您在发布请求时获得了 bibleID,因为您通过 requestawait axios.post('/comentarios', {bibleId: this.bibleId}) 传递它。每次发送 GET 和 POST 请求时,您都会遇到 2 条不同的路线。因此,如果我理解您,在发布请求之后,您希望将新添加的记录作为响应返回。
    • Route::post('/comentarios ', 'ComentariosController@index'); Route::post('/newComentario', 'ComentariosController@new'); 这有点令人困惑。您有 2 条带有 POST 的路线。目前尚不清楚哪个做什么。你已经有了资源控制器,你可以用它来返回所有带有index method的cmets,用store method存储评论等等......
    • 关于Route::post('/newComentario', 'ComentariosController@new');它的痛处,我只是因为我正在测试而留下它,但它会影响什么吗?
    • 不,它不会,但Route::post('/comentarios ', 'ComentariosController@index') 会,因为资源控制器method index 处理获取请求。如果您想存储只需使用store method 并确保通过删除, ['except' => ['store']] 来启用它。再次,如果我理解你,在发布(保存记录)请求后,你想返回新添加的记录作为响应。
    猜你喜欢
    • 2017-09-11
    • 2016-11-17
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 2016-10-03
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多