Support the ongoing development of Laravel.io →
Requests Session Eloquent

So I have website based on Laravel framework. I have table and the filter for table to filter the items - http://prntscr.com/ccht0f.

When I filter them by anything all works good, but when I change the page filtering disapers from session. http://prntscr.com/cchutt - http://prntscr.com/cchuyo. Looks like pagination destroys all sessions.

My code:

public function filters(Request $request)
{
    $filter_item_acquisition_forms = [null];
    $filter_collections = [null];
    $filter_origin_dates = [null];
 
    $order_by = request()->query('order_by', 'id');
    $dir = request()->query('dir', 'desc');
 
    $storage_items = StorageItem::with(
        'authorClassification',
        'placeClassification',
        'classificationValueOrigin',
        'classificationValueOriginDate',
        'classificationValueItemAcquisitionForm',
        'classificationValueCollection',
        'classificationValuesMaterials',
        'classificationValuesTechnique',
        'employeeClassificationsRestorers',
        'userLastUpdatedBy.employeeClassification',
        'userResponsibleUser.employeeClassification',
        'attachments'
    );
 
    $storage_items = $storage_items->id($request->filter_id)
        ->acceptanceId($request->filter_acceptance_id)
        ->acceptanceNumber($request->filter_acceptance_number)
        ->acceptanceDate($request->filter_acceptance_date)
        ->mainInventoryNumber($request->filter_main_inventory_number_from, $request->filter_main_inventory_number_to)
        ->scientificInventoryNumber($request->filter_scientific_inventory_number)
        ->imageInventoryNumber($request->filter_image_inventory_number)
        ->itemCosts($request->filter_item_costs_from, $request->filter_item_costs_to)
        ->originDate($request->filter_origin_date)
        ->updatedAt($request->filter_updated_at_from, $request->filter_updated_at_to)
        ->addingDate($request->filter_added_from, $request->filter_added_to)
        ->itemAcquisitionForm($request->filter_item_acquisition_form)
        ->collection($request->filter_collection)
        ->employee($request->filter_employee)
        ->isInExposition($request->filter_is_in_exposition)
        ->isRestored($request->filter_is_restored)
        ->haveAttachments($request->filter_have_attachments)
        ->haveNotCosts($request->filter_have_not_costs)
        ->searchInField($request->filter_search_in_field, $request->filter_word_or_phrase);
 
 
 
 
    $storage_items = $storage_items->orderBy($order_by, $dir)->paginate(20);
 
    foreach ($storage_items as $storage_item) {
        if ($storage_item->classificationValueItemAcquisitionForm != null) {
            $filter_item_acquisition_forms[$storage_item->classificationValueItemAcquisitionForm->id] = $storage_item->classificationValueItemAcquisitionForm->value;
        }
 
        if ($storage_item->classificationValueCollection != null) {
            $filter_collections[$storage_item->classificationValueCollection->id] = $storage_item->classificationValueCollection->value;
        }
 
        if (!is_null($storage_item->classificationValueOriginDate)) {
            $filter_origin_date[$storage_item->classificationValueOriginDate->id] = $storage_item->classificationValueOriginDate->value;
        }
    }
    $request->flash();
 
    return view('panel.storage_items.filters')->with([
        'storage_items' => $storage_items,
        'current_order_query' => compact('order_by', 'dir'),
        'employees' => [null] + EmployeeClassification::lists('employee', 'id')->toArray(),
 
        'filter_what_to_look_for' => [
            'storage-items' => trans('fields.storage_items'),
            'storage-item-acceptances' => trans('fields.storage_items_acceptances'),
            'archive-objects' => trans('fields.archive_objects'),
            'archive-documents' => trans('fields.archive_documents'),
            'archive-docs-acceptance-acts' => trans('fields.archive_documents_acceptance_acts')
        ],
        'filter_item_acquisition_forms' => $filter_item_acquisition_forms,
        'filter_collections' => [null] + Classification::findOrFail(2)->classificationValues()->lists('value', 'id')->toArray(),
        //'filter_collections' => $filter_collections,
        'filter_origin_dates' => $filter_origin_dates,
        'filter_search_in_field' => [
            trans('fields.storage_items') => [
                'item_name' => trans('fields.item_name'),
                'author' => trans('fields.author'),
                'about_the_author' => trans('fields.about_author'),
                'item_description' => trans('fields.item_description'),
                'content_description' => trans('fields.content_description'),
                'item_history' => trans('fields.item_history'),
                'branding_notes' => trans('fields.branding_notes'),
                'damage_characteristics' => trans('fields.damage_characteristics'),
                'published' => trans('fields.published'),
                'exhibited' => trans('fields.exhibited'),
                'inquiries' => trans('fields.inquiries')
            ],
            trans_choice('fields.attachments', 0) => [
                'attachment_name' => trans('fields.name'),
                'attachment_description' => trans('fields.description')
            ]
        ]
    ]);
}
Last updated 3 years ago.
0
Solution

So I fixed it myself.

Solution:

I got the collection ID from request and stored it in variable.

$filter_collection = $request->filter_collection;

Passed variable to the view

->with('filter_collection', $filter_collection)

And changed my pagination to pass collection ID to next view

{{ $storage_items->appends(['filter_collection' => $filter_collection])->links() }}
0

Sign in to participate in this thread!

Eventy

Your banner here too?

FaZeRs fazers Joined 1 Sep 2016

Moderators

We'd like to thank these amazing companies for supporting us

Your logo here?

Laravel.io

The Laravel portal for problem solving, knowledge sharing and community building.

© 2025 Laravel.io - All rights reserved.