Как я могу получать данные в реальном времени из базы данных MySQL через Laravel?

Я бы предпочел вызывать код из вида лезвия.

Как я могу это реализовать или какой подход для этого подходит?

Строка кода, которую я использую для получения данных:

Facility::where('aID',$this->id)->where('type',$type)->count();
1
1myb 2 Янв 2014 в 08:26

1 ответ

Лучший ответ

Как я уверен, вы знаете, с чистым PHP вы не сможете этого сделать.

Если вы открыты для «живого» значения, периодически каждую секунду или около того, вы можете сделать это с помощью повторяющегося вызова ajax с помощью jQuery, который будет выполнять пересчет и заменять текущий счет новым значением.

Это также будет означать, что вы не сможете сделать это из одного представления лезвия, вам нужно будет настроить контроллер, чтобы иметь возможность выполнять ваш вызов ajax, который вернет вам новый счетчик.

Вид основного лезвия

<h1>
  The current count is 
  <span id="mycount">
    {{ Facility::where('aID',$this->id)->where('type',$type)->count(); }}
  </span>
</h1>

JQuery

function getCount() {

    $.ajax({
      type: "GET",
      url: "{{ route('route_for_new_data_here') }}"
    })
    .done(function( data ) {
      $('#mycount').html(data);

      setTimeout(getCount, 1000);
    });
}
getCount();

Контроллер

В контроллере вам понадобится что-то, чтобы работать с этим и отправить счет

function getCount()
{
    echo Facility::where('aID',$this->id)->where('type',$type)->count();
}
2
duellsy 2 Янв 2014 в 10:32
Спасибо, что дали мне подсказку, как это сделать: D Я написал контроллер и пытаюсь реализовать эту функцию. но функция не работает :( URL-адрес действительно может возвращать счетчик. Могу ли я знать, почему? спасибо
 – 
1myb
2 Янв 2014 в 10:01
Вам нужно сделать ее так же, как любую другую страницу, но вместо отображения содержимого вы отображаете значение.
 – 
duellsy
2 Янв 2014 в 10:02
Извините ... Думаю, мне следовало echo получить результат, а не return ... ответ обновлен.
 – 
duellsy
2 Янв 2014 в 10:03
Да. эхо, но тоже не обновляется. это код js. paste.laravel.com/1jjn, и я попытался вызвать URL. он возвращает счет
 – 
1myb
2 Янв 2014 в 10:12
2
Неряшливо с моей стороны, извините ... getCount не должно было быть в кавычках. Ответ обновлен, надеюсь, в последний раз!
 – 
duellsy
2 Янв 2014 в 10:32