У меня есть запрос Ajax, который работает правильно, но при попытке добавить переменную в конкатенационное назначение '$ output' я получаю ошибку 500.
Это для приложения, использующего laravel для отображения ресурсов, связанных с выбранными темами.Существуют красноречивые отношения ownToMany, от тем к статьям, лифтам, цитатам и визуальным элементам, которые являются обратными и работают правильно
Это функция ajax в моем контроллере:
public function action(Request $request)
{
if($request->ajax())
{
$topics = Topics::orderBy('Topic', 'asc')->get();
$output = '';
$query = $request->get('query');
//query
if($query != '')
{
$data = DB::table('topics')
->where('topic', 'like', '%'.$query.'%')
->where('slug', 'like', '%'.$query.'%')
->get();
}
else
{
$data = $topics;
}
//updating variables with query data
$total_row = $data->count();
if($total_row > 0)
{
foreach($data as $row)
{
// combining resources associated with topics <-- $resource is the trouble variable!!
$resource = $row->articles->count() + $row->lifts->count() + $row->visuals->count() + $row->quotes->count();
$output .= '<tr><td><a href="/topics/'.$row->slug.'">'.$row->topic.'</a> '.$resource.'</td></tr>';
}
}
else
{
$output = '<tr><td align="center" colspan="5">No Data Found</td></tr>';
}
$data = array(
'table_data' => $output
);
echo json_encode($data);
}
}
мой клинок
<!DOCTYPE html>
<html>
<head>
<title>Live search in laravel using AJAX</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="form-group">
<input type="text" name="search" id="search" class="form-control" placeholder="Search Topics" />
</div>
<div class="table-responsive">
<table class="table table-striped table-bordered">
<tbody>
</tbody>
</table>
</div>
</body>
</html>
<script>
$(document).ready(function(){
fetch_topic_data();
function fetch_topic_data(query = '')
{
$.ajax({
url:"{{ route('live_search.action') }}",
method:'GET',
data:{query:query},
dataType:'json',
success:function(data)
{
$('tbody').html(data.table_data);
}
})
}
$(document).on('keyup', '#search', function(){
var query = $(this).val();
fetch_topic_data(query);
});
});
</script>
Ошибки консоли
GET http://127.0.0.1:8000/live_search/action?query=te 500 (Internal Server Error)
send @ jquery.min.js:4
ajax @ jquery.min.js:4
fetch_topic_data @ live_search:26
(anonymous) @ live_search:39
dispatch @ jquery.min.js:3
q.handle @ jquery.min.js:3
С переменной $ resource запрос не работает, но темы правильно отображаются на странице.
с $ resource

без $ resource

Когда я удаляю $ resource,запрос работает, но, очевидно, я хотел бы отобразить тему и результаты запроса с количеством ресурсов, связанных с содержанием темы, например:
Сократ 1
Любая помощь очень ценится!Спасибо за ваше время.