Передача ID из Laravel показать маршрут Datatables - PullRequest
1 голос
/ 03 июля 2019

Я думаю, что я близок, но изо всех сил пытаюсь передать заданный идентификатор из моего метода show в связанный метод showdata, чтобы таблицы данных могли манифестироваться со связанными данными только для этого идентификатора.

Код работает, когда я жестко кодирую идентификатор или просто удаляю инструкцию where. Моя цель - иметь связанные с данными элементы, связанные с манифестом, только для данной коллекции.

Маршруты:

Route::resource('collections', 'CollectionsController');
Route::get('collectionsdata/{id}', 'CollectionsController@showdata');

Show.blade.php:

var id = {{ $collection->id }}
        $(function () {...

$('#item-table').DataTable({
                //processing: true,
                serverSide: true,
                ajax: "/collectionsdata/"+ id,
                columns: [
                    //{data: 'id', name: 'id'},
                    {data: 'id', name: 'id'},
                    {data: 'collection_id', name: 'collection_id'},
                    {data: 'type_id', name: 'type_id'},
                    {data: 'collection.title', name: 'collection.title'},
                    {data: 'type.name', name: 'type.name'},
                    {data: 'updated_at', name: 'updated_at'},
                ]
            });

Контроллер коллекций:

    public function show(Collection $collection)
    {
        $collection->load('items.type')->get();

        //dd($collection);
        return view ('collections.show', compact('collection'));
    }

    public function showdata()
    {
        $data = Item::with('collection', 'type')->where('collection_id', $id);

        return Datatables::of($data)->make(true);
    }

ШОУ само по себе функционирует хорошо, var id хорошо работает в блейде - я думаю, что мне просто не хватает чего-то в контроллере, чтобы получить идентификатор и в конечном итоге создать требуемый запрос на $ data для возврата к таблице данных.

Ответы [ 2 ]

1 голос
/ 03 июля 2019

У вас должен быть только один параметр в showdata, один для идентификатора, который вы передаете с URL

public function showdata($id)
{
    $data = Item::with('collection', 'type')->where('collection_id', $id);
    return Datatables::of($data)->make(true);
}
1 голос
/ 03 июля 2019

Да.В вашем методе show отсутствует Request $ request для получения $ id из маршрута.

use Illuminate\Http\Request;

public function showdata(Request $request)
{
    $collection_id = $request->id;

    $data = Item::with('collection', 'type')->where('collection_id', $id);

    return Datatables::of($data)->make(true);
}

Вы также можете получить id непосредственно из контроллеравместо использования $ request .

public function showdata($id)
{
    $data = Item::with('collection', 'type')->where('collection_id', $id);

    return Datatables::of($data)->make(true);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...