У меня проблема в том, что я нигде не мог найти ответ.Я пишу приложение с PHP (Laravel) в бэкэнде и VueJs во внешнем интерфейсе.Мне удалось сделать все приложение без особых проблем, но теперь мне нужно сохранить и обновить одну таблицу одновременно, я объясню, следуя коду.
Обновление сценария
Я пишу элемент управления техобслуживанием, мне нужно вводить записи о техобслуживании в таблицу, поэтому есть некоторые техобслуживания, которые выполняются периодически, и я должен предупредить, когда будет следующее обслуживание, этопочему мне нужно POST и положить в то же время.Я не могу отправить один запрос от vue к laravel, потому что я использую маршруты и, если он идет с методом POST, я получаю ошибку метода, не разрешенную, как вы можете видеть в функции контроллера, я уже пытался использоватьодиночный запрос.
Вот маршруты, которые я использую в основном файле VUE:
<b-tab title="Cadastro de Manutenções">
<manutencao-cadastro
rotacadadd="manutencao/cadastro/"
rotamaquina="manutencao/cadastro/autcomp"
rotatipoautcomp="manutencao/cadastro/axios-tipo"
rotanomecolaborador="manutencao/cadastro/nomeColaborador"
rotacadsalvar="manutencao/cadastro/salvarManutencao"
rotacadatualizar="manutencao/cadastro/updateManute"
rotacaddel="manutencao/cadastro/deleteManute"
rotaatualizacadastro="manutencao/cadastro/atualizaCad"
/>
</b-tab>
Вот моя функция сохранения / обновления на VUE:
save(){
const method = this.maintenance.id ? 'put' : 'post'
const id = this.maintenance.id ? `/${this.maintenance.id}` : ''
const url = this.maintenance.id ? this.rotacadatualizar : this.rotacadsalvar
axios[method](`${url}${id}`, this.maintenance)
.then(() => {
this.reset()
}).catch((err) => {
console.error(err)
});
}
Как вывидите, эта функция сохраняет или обновляет в зависимости от случая, работает нормально.
Это моя функция на бэкэнде:
public function saveMaintenance(Request $request)
{
$maquina = $this->ManutencaoMaquinasM
->where('descricao', $request->maquina)
->first();
$tecnico = $this->ColaboradorM
->where('nomecolaborador', $request->tecnico)
->first();
$manutencao = $this->TecManutencaoTipoM
->where('manutencao', $request->manutencao)
->first();
$dia = '';
$data = $this->TecManutencaoCadastroM->join('manutencao_maquinas', 'tec_manutencao_cadastros.maqId', 'manutencao_maquinas.id')
->select(DB::raw('max(tec_manutencao_cadastros.data) as date'))
->where('manutencaoId', $manutencao->id)
->where('manutencao_maquinas.descricao', $request->maquina)
->get();
foreach ($data as $dat) {
$dia = $dat->date;
}
try{
\DB::beginTransaction();
$input = $request->all();
$maintenance = new TecManutencaoCadastro();
$maintenance->maqId = $maquina->id;
$maintenance->tipoId = $input['tipo'];
$maintenance->manutencaoId = $manutencao->id;
$maintenance->tecnicoId = $tecnico->id;
$maintenance->data = $input['data'];
$maintenance->tempo = $input['tempo'];
$maintenance->obs = $input['obs'];
$maintenance->save();
/* $atualizar = $this->TecManutencaoCadastroM
->where('madIq', $maquina->id)
->where('manutencaoId', $manutencao->id)
->where('data', $dia)
->update(array('atendido' => 's')); */
//\Log::info($maintenance);
\DB::commit();
return response()->json('salvo', 200);
} catch (\Exception $e){
\DB::rollback();
return response()->json($e.'erro', 422);
}
}
Также работает нормально, когда мне нужно сохранить данные.Прокомментированный блок работает в laravel, но с vue, это не так.
Эта функция для обновления:
public function updateMaintenance(Request $request)
{
$maquina = $this->ManutencaoMaquinasM
->where('descricao', $request->maquina)
->first();
$tecnico = $this->ColaboradorM
->where('nomecolaborador', $request->tecnico)
->first();
$manutencao = $this->TecManutencaoTipoM
->where('manutencao', $request->manutencao)
->first();
try{
\DB::beginTransaction();
$tipo = $this->TecManutencaoCadastroM->where('id', '=', $request->id)
->update(
array(
'maqId' => $maquina->id,
'tipoId' => $request->tipo,
'manutencaoId' => $manutencao->id,
'tecnicoId' => $tecnico->id,
'data' => $request->data,
'tempo' => $request->tempo,
'obs' => $request->obs
)
);
\DB::commit();
return response()->json('salvo', 200);
} catch (\Exception $e){
\DB::rollback();
return response()->json($e.'erro', 422);
}
}
Работает как полагается.
Моя проблема в том, что я пытаюсь сохранить некоторые новые данные в таблице и обновить другую строку в той же таблице, в то же время, но, как вы можете видеть в методе vue, когда я сохраняю,путь указывает на POST, и когда я обновляюсь, путь указывает на PUT, я думаю, поэтому я не могу выполнить это действие.Это способ для меня сделать это?Я новичок в Vue и не нашел ничего, что могло бы мне помочь.Кто-нибудь может указать мне несколько направлений, пожалуйста?
Заранее спасибо.