Laravel поиск/разбиение на страницы ajax с подсчетом моделей отношений

#ajax #laravel

Вопрос:

Я создаю сеть профилактического обслуживания, которую будут поддерживать все компьютеры компании … Пожалуйста, помогите! не показывал count() внутри foreach после извлечения данных с помощью ajax .. что мне делать?

Лезвие: не будет учитывать данные в модели отношений после поиска и разбиения на страницы

 <div id="table_data">
@foreach($dept as $departments)
    <tr>
   <th><a href="/summary/{{$departments->id}}" target="_blank"> //not getting id's after search and paginate
             {{ $departments->department }}
         </a> 
   </th>
       <td><center>N/A</center></td>
       <td><center>
           {{ $departments->computers->count() }}   //will not count after search and paginate
           </center>
       </td>
     </tr>
@endforeach
</div>

{!! $dept->links() !!} 
 

Вот мой контроллер

 <?php

namespace AppHttpControllers;

use AppModelsDepartment;
use IlluminateHttpRequest;

class HomeController extends Controller
{
public function index()
    {
        $dept = Department::paginate(2);
        return view('home', compact('dept'));
    }

public function fetch_data()
    {
        if(request()->ajax()){
            $query = request()->get('query');
            $query = str_replace(" ", "%", $query);
            $dept = Department::select('department')
                    ->where('department', 'like', '%'.$query.'%')
                    ->paginate(2);
            return view('paginate', compact('dept'))->render();
        }
    }
}
 

Модель

 namespace AppModels;

use AppModelsComputer;
use IlluminateDatabaseEloquentModel;
use IlluminateDatabaseEloquentFactoriesHasFactory;

class Department extends Model
{
    use HasFactory;
    protected $guarded = [];

    public function computers()
    {
        return $this->hasMany(Computer::class);
    }
}
 

Ajax

 $(document).ready(function(){

        function fetch_data(page, query){
            $.ajax({
            url:"/pagination/fetch_data?page=" page "amp;query=" query,
                success:function(data){
                    $('#table_data').html(data);
                }
            });
        }
        
        $(document).on('keyup', '#search', function(){
            let query = $('#search').val();
            // let column_name = $('#hidden_column_name').val();
            let page = $('#hidden_page').val();
            fetch_data(page, query)
        })
        
        $(document).on('click', '.pagination a', function(e){
            e.preventDefault(); 
            let page = $(this).attr('href').split('page=')[1];
            let query = $('#search').val();

            $('li').removeClass('active');
            $(this).parent('li').addClass('active');
            fetch_data(page, query);
        });

});
 

Маршрут

 Route::get('/home', [HomeController::class, 'index'])->name('home');
Route::get('pagination/fetch_data', [HomeController::class, 'fetch_data']);