将价值从Vue传递到控制器laravel的问题

时间:2019-08-28 17:15:14

标签: php laravel vue.js

我又遇到了Laravel和Vue无法解决的其他问题,我与Vue的合作非常新,也许这就是为什么我遇到很多困难的原因。 这是问题所在: 在Vue视图中,我得到一个会改变的值,直到一切正常为止,但问题是,我必须将此值传递给控制器​​,以便我可以进行其他一些操作,这是代码:

这是触发值更改的选择:

<b-col md="4" sm="12">
                <b-form-group label="Tipo: " label-for="tipo">
                    <input type="hidden" v-model="maintenance.typeId" name="tipoId" id="tipoId">
                    <b-form-select v-model="selecionado" id="tipo" name="tipo" :options="options" :readonly="mode === 'remove'" @change="selecionar"></b-form-select>
                </b-form-group>
            </b-col>

该函数将更改值并将其理论上传递给控制器​​:

selecionar(value){
            const kind = this.selecionado
            const url = this.rotatipoautcomp

            axios.get(`${url}?${kind}=` + kind, this.manutencoes).then(res => {
                this.manutencoes = res.data
                console.log(`${url}?${kind}=`)
                console.log(res.data)
            })
        }

这是控制器中的功能:

public function axiosServices()
{
    $tipo = Input::get('selecionado');

    $tipoSelection = TecManutencaoTipo::where('tipo', '=', (string)$tipo);

    \Log::info($tipoSelection);

    $tiposSelected = TecManutencaoTipo::select('manutencao AS value')
        ->where('tipo', '=',  $tipoSelection->tipo)
        ->get();

    $dados = [];

    if($tiposSelected) {
        $dados = $tiposSelected;
        //\Log::info($tipo);
        return $dados;
    } else {
        return response()->json($dados, 422);
    }
}

我在这种情况下的路线

Route::get('axios-tipo', ['as'=>'tecelagem.manutencao.cadastro.axios-tipo', 'uses' => 'TecelagemManutencaoController@axiosServices']);

我想要做的就是获取此值,传递给控制器​​并进行选择,以便我可以填充此值:

<b-col md="4" sm="12">
                <b-form-group label="Manutenção: " label-for="manutencao">
                    <input type="hidden" v-model="maintenance.manutencao" name="manutencaoId" id="manutencaoId">
                    <!--<b-form-input id="manutencao" placeholder="Informe o nome da manutenção..." :readonly="mode === 'remove'" />-->
                    <b-form-input list="input-list1" id="manutencao" placeholder="Informe o nome da manutenção..." :readonly="mode === 'remove'"></b-form-input>
                    <b-form-datalist id="input-list1" :options="manutencoes"></b-form-datalist>
                </b-form-group>
            </b-col>

我得到的错误是:

  

获取http://localhost:8000/portal-cambos/tecelagem/manutencao/cadastro/axios-tipo?0=0 500(内部服务器错误)

在laravel日志中,我得到了:

  

laravel.ERROR:Illuminate \ Database \ Eloquent \ Builder类的对象无法转换为字符串

正如我之前说过的,我很新,不知道我到底在做什么错。

任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

@DerekPollard,感谢您的帮助,弄清楚这里出了什么问题...

更改行

axios.get(`${url}?{kind}=` + kind, this.manutencoes).then(res => {

针对:

axios.get(`${url}?tipo=` + kind, this.manutencoes).then(res => {

现在控制器中的功能是:

public function axiosServices()
{
    $tipo = Input::get('tipo');

    //dd($tipo);
    //return response()->json($tipo);

    //\Log::info($tipo);

    //$tipoSelection = $this->TecManutencaoTipoM->where('tipo', '=', $tipo)->get();

    //return response()->json($tipoSelection);

    //\Log::info($tipoSelection);

    $tiposSelected = TecManutencaoTipo::select('manutencao AS value')
        ->where('tipo', '=',  $tipo)
        ->get();

    $dados = [];

    if($tiposSelected) {
        $dados = $tiposSelected;
        //\Log::info($tipo);
        return $dados;
    } else {
        //return response()->json(['dados' => $dados], 422);
        return response()->json($dados, 422);
    }
}

正在按预期的方式工作。 再次感谢。