Запрос в контроллере из идентификатора с 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), чтобы я мог использовать его в своем запросе и получить правильные данные:

Request - Inspector de Chrome

где у меня есть ошибка?

Спасибо.

Author: Eslacuare, 2017-06-11

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');
 1
Author: Shaz, 2017-06-13 18:20:51