如何在laravel视图中自动更新数据?

Nab*_*han 1 laravel laravel-5

我有一个视图,它将显示数据库中的重要任务列表。我在控制器中有一个函数,它将数据集合返回到视图。

我的控制器功能是

public function list()
{
    $tasks= Task::where('category','1')->get();
    //category is 1 when the task is important
    return view('important', compact('tasks'));
}
Run Code Online (Sandbox Code Playgroud)

我的观点就像

<ul>    
@foreach ($tasks as $task)  
    <li> {{$task->body}}</li>
@endforeach
</ul>
Run Code Online (Sandbox Code Playgroud)

我想要做的本质上是每当向数据库中添加新的重要任务时调用列表函数。我怎样才能做到这一点?

Sau*_*try 5

在你的 web.php

Route::get('/tasks','TasksController@list')->name('get_tasks');
Run Code Online (Sandbox Code Playgroud)

在您的控制器内:

use Illuminate\Http\Request;

public function list(Request $request)
{
    $tasks= Task::where('category','1')->get();
    if($request->ajax()){
       return response()->json(array('tasks'=>$tasks));
    }
    return view('important', compact('tasks'));
}
Run Code Online (Sandbox Code Playgroud)

在您的刀片视图中:

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
   $(document).ready(function(){
       setInterval(function(){
          $.ajax({
             url:'/tasks',
             type:'GET',
             dataType:'json',
             success:function(response){
                if(response.tasks.length>0){
                   var tasks ='';
                   for(var i=0;i<response.tasks.length;i++){
                      tasks=tasks+'<li>'+response.tasks[i]['body']+'</li>';
                   }
                   $('#tasklist').empty();
                   $('#tasklist').append(tasks);
                }
             },error:function(err){

             }
          })
       }, 5000);
   });
</script>



    <ul id="tasklist">    
        @foreach ($tasks as $task)  
        <li> {{$task->body}}</li>
       @endforeach
    </ul>
Run Code Online (Sandbox Code Playgroud)