Запрос в контроллере из идентификатора с jquery
я пытаюсь извлечь данные из таблицы из идентификатора и отобразить их с помощью datatable.
с помощью jquery у меня есть следующая функция:
var info = function(tbody, table){
$(tbody).on("click","a[id=ButtonMas]", function(){
if(table.row(this).child.isShown()){
var data = table.row(this).data();
}else{
var data = table.row($(this).parents("tr")).data();
}
var pc = data["id"];
route = "/historico/"+pc+"";
$('#ModalInfoEquipos').modal('show');
var dt_historico = $('#t_historico').DataTable({
"ajax": {
"url": route,
"dataSrc": ""
},
"columns": [
{ "data": "created_at" },
{ "data": "estado" },
{ "data": "ubicacion" },
{ "data": "empleado" },
{ "data": "f_asignacion" }, ],
"language": {
"url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Spanish.json"
},
"scrollX": true,
});
});
}
в моем контроллере у меня определен следующий index:
public function index(Request $request, $id)
{
if ($request->ajax()) {
$historico = HistoricoEquipos::Consulta($id);
return response()->json($historico);
}
return view('historico.index');
}
но он возвращает мне пустой и неправильный json
.
в моей модели у меня есть определенная функция запроса:
public static function Consulta($id){
return DB::table('historico_equipos')
->select('historico_equipos.*')
->where('id_equipo', $id)
->get();
}
я получаю следующее request
и мне нужно первое значение (1), чтобы я мог использовать его в своем запросе и получить правильные данные:
где у меня есть ошибка?
Спасибо.
1 answers
Я собираюсь немного переосмыслить ваш код Laravel, чтобы воспользоваться функциями фреймворка.
Я предполагаю, что в вашей исторической модели оборудование таблица, которая подключена historico_equipos
.
Во-первых, удалить метод Consulta()
из модели, который не нужен в соответствии с обычной практикой Laravel.
Таким образом, таблица в исторической модели оборудования должна быть определена следующим образом:
<?php
namespace app\Models;
use Illuminate\Database\Eloquent\Model;
class Car extends Model
{
protected $table = 'historico_equipos';
protected $fillable = [
// ...
];
// ...
}
Теперь в контроллере мы воспользуемся Eloquent для сделать запрос:
public function index(Request $request, $id)
{
if ($request->ajax()) {
$historico = HistoricoEquipos::where('id_equipo', $id)
->get();
return response()->json($historico);
}
return view('historico.index');
}
Вы можете прочитать больше об Eloquent в документации: https://laravel.com/docs/5.4/eloquent
После обсуждения в чате мы обнаружили, что в определении путей была ошибка, и метод index не должен быть включен в Route::resource()
Route::resource('historico','HistoricoEquiposController', ['except' => ['index']]);
Путь должен был быть добавлен отдельно:
Route::get('historico/{historico}', 'HistoricoEquiposController@index')->name('historico.index');