douduiyun6125 2019-07-16 16:05
浏览 71
已采纳

Laravel - 显示所有使用碳的帖子

So I used carbon in my project and now it shows me all posts made today, and that's okay for me. But now I need to see posts from past days, how can I do that with carbon? I would like something like href link for other past days in my view, home.blade.php

Here is my HomeController with carbon

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use App\Post;
use DB;
use Auth;
use Carbon\Carbon;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
   public function index()
    {
        $date = new Carbon(request('date'));
        $posts = Post::where('user_id', Auth::id())
                ->whereDate('created_at','=',$date)
                ->orderBy('created_at', 'DESC')
                ->paginate(30); //add {{ $posts->links() }} if paginate is enabled
        return view('home', compact('date', $date))->with('posts', $posts);
    }    
}

Here is my home.blade.php

@extends('layouts.theme')

@section('content')
    <style>
        body{
            margin: 0;
            background-color: #EBEBEB;
        }
    </style>
    <div class="mainl">
        <div class="row">
            <div class="columna">



                <h1>{{ Auth::user()->name }}</h1>
                <hr>
            </div>

            <div class="columns">
                <a href="{{ route('logout') }}" id="logout"
                onclick="event.preventDefault();
                        document.getElementById('logout-form').submit();">
                    {{ __('LOGOUT') }}
                </a>

                <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
                    @csrf
                </form>

            </div>
        </div>
        </br></br></br>

        @if(count($posts)> 0)
        <table>
            <thead>
                <tr>
                    <th>BR.KESICE</th>
                    <th>IME I PREZIME</th>
                    <th>BR.TELEFONA</th>
                    <th>POSAO</th>
                    <th>CIJENA</th>
                    <th>PLACANJE</th>
                    <th>POPUST</th>
                    <th>DATUM PREUZ.</th>
                    <th>DATUM IZDAV.</th>
                    <th>SMJENA</th>
                    <th>RADNIK</th>
                    <th>STATUS</th>
                    <th>IZMIJENI</th>

                </tr>
            </thead>
            <tbody>
                @foreach($posts as $post)
                <tr>
                    <td>{{$post->br_kesice}}</td>
                    <td>{{$post->ime}}</td>
                    <td>{{$post->br_telefona}}</td>
                    <td>{{$post->posao}}</td>
                    <td>{{$post->cijena}}</td>
                    <td>{{$post->placanje}}</td>
                    <td>{{$post->popust}}</td>
                    <td>{{$post->datum_preuz}}</td>
                    @if($post->status == 1)
                        <td>/</td>
                    @else
                        <td>{{$post->datum_izdav}}</td>
                    @endif
                    <td>{{$post->smjena}}</td>
                    <td>{{$post->radnik}}</td>
                    <td>
                        @if($post->status == 0)
                        <span class="label label-primary" id="statusdeaktivan">Deaktivan</span>
                        @elseif($post->status == 1)
                        <span class="label label-success" id="statusaktivan">Aktivan</span>
                        @elseif($post->status == 2)
                        <span class="label label-danger" id="statusdeaktivan">Rejected</span>
                        @else
                        <span class="label label-info" id="statusdeaktivan">Deaktivan</span>
                        @endif
                    </td>
                    @if($post->status == 3)

                    @else
                    <td><a href="posts/{{$post->id}}/edit" class="edit"><i class="far fa-edit"></i></a></td>
                    @endif

                </tr>

                @endforeach
            </tbody>
            <tfoot>
                <tr>
                    <th>UKUPAN IZNOS:&nbsp;&nbsp;{{ Auth::user()->posts()->whereDate('created_at','=',$date)->sum('cijena')}}&euro;</th>
                    <th>KARTICA:&nbsp;&nbsp;{{ Auth::user()->posts()->whereDate('created_at','=',$date)->where('placanje', 'Kartica')->sum('cijena')}}&euro;</th>
                    <th>GOTOVINA:&nbsp;&nbsp;{{ Auth::user()->posts()->whereDate('created_at','=',$date)->where('placanje', 'Kartica')->where('placanje', 'Gotovina')->sum('cijena')}}&euro;</th>
                    <th>VIRMAN:&nbsp;&nbsp;{{ Auth::user()->posts()->whereDate('created_at','=',$date)->where('placanje', 'Kartica')->where('placanje', 'Virman')->sum('cijena')}}&euro;</th>
                </tr>
            </tfoot>
        </table>
        {{ $posts->links() }}
        @else
            <p>Trenutno nema unosa.</p>
        @endif
    </div>
@endsection

Any solutions? I tried but with no success.

  • 写回答

2条回答 默认 最新

  • dongxie3963 2019-07-16 16:30
    关注

    send 2 query parameters from and to and use whereBetween to show posts from given date range

    your url will be like :

    /posts?from=2019-07-15&to=2019-07-16

    route in your web.php

    Route::get('/posts','HomeController@index')->name('posts');
    

    in your controller :

    public function index(){
    
     // set default value for from is yesterday (you can set as per your requirement)
     // set default value for to is today
    
     $from=$request->has('from')?$request->query('from'):Carbon::now()->subDays(1);
     $to=$request->has('to')?$request->query('to'):Carbon::now()->endOfDay();
    
    
    $posts = Post::where('user_id', Auth::id())
                    ->whereBetween('created_at',[$from,$to]);
                    ->orderBy('created_at', 'DESC')
                    ->paginate(30); 
    
             return view('home')->with(['from'=>$from,'to'=>$to,'posts'=>$posts]);
    
     }
    

    use daterangepicker from frontend side will be better .

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!