#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']);