Laravel 5 - 仅当'tip_date'列等于今天的日期时显示

时间:2015-07-22 19:17:42

标签: model-view-controller controller laravel-5 laravel-5.1

我安装了Laravel 5.1,并且我有一个包含各种列的提示数据库......一列是提示相关的日期。

因此我只想显示日期等于今天日期的表格行。

我已经设法得到它所以我可以运行foreach来循环每个提示但需要一个特定的只是为了显示与今天匹配的提示

任何事情都会很棒:)

这是我的代码

TipsController

public function index() {
        $tips = Tips::whereDate('tip_date','=', strftime("%y-%m-%d", strtotime(\Carbon\Carbon::now())))->get();
        return view ('tips.index', compact ('tips'));
    }

提示(型号)

protected $fillable = [

        'tip_date',
        'home_team',
        'away_team',
        'league',
        'tip',
        'odds',
        'score',
        'result'

    ];

    protected $dates = ['tip_date'];

Index.Blade.PHP(查看)

<div class="align-center">

                                 <h1><?php echo date("dS F Y");?></h1>


                                 @foreach($tips as $tip)
                                     @if (date("Y-m-d",strtotime($tip['tip_date'])) == date("Y-m-d"))

                                 <h3>{{ $tip->league }}</h3>
                                 <h2>{{ $tip->home_team }} V {{ $tip->away_team }}</h2>
                                 <h3><b>{{ $tip->tip }}</b> @ {{ $tip->odds }}</h3>
                                 @endif
                                 @endforeach


                    </div>
                </div>

                <table class="table table-striped">
                      <thead>
                        <tr>
                          <th>Date</th>
                          <th>Match</th>
                          <th>Tip</th>
                          <th>Odds</th>
                          <th>Score</th>
                          <th>Result</th>
                        </tr>
                      </thead>
                      <tbody>


<?php $tipcount=0; ?>
@foreach($tips as $tip)
    @if (date("Y-m-d",strtotime($tip['tip_date'])) < date("Y-m-d"))
 <tr>
                              <th scope="row">{{ $tip->tip_date }}</th>
                              <td>{{ $tip->home_team }} V {{ $tip->away_team }}</td>
                              <td>{{ $tip->tip }}</td>
                              <td>{{ $tip->odds }}</td>
                              <td>{{ $tip->score }}</td>
                              <td>{{ $tip->result }}</td>
                            </tr>    @endif


    <?php
    $tipcount++;
    if($tipcount===30){break;};
    ?>


@endforeach

3 个答案:

答案 0 :(得分:2)

贾马尔说...... 但是在视图/ foreach方面,您可以尝试:

@foreach($tips as $tip)
    @if (date("Y-m-d",strtotime($tip['tip_date'])) == date("Y-m-d"))
        {{$tip->name}}
    @endif
@endforeach

<?php $tipcount=0; ?>
@foreach($tips as $tip)
    @if (date("Y-m-d",strtotime($tip['tip_date'])) < date("Y-m-d"))
        {{$tip->name}}
    @endif


    <?php 
    $tipcount++; 
    if($tipcount===30){break;}; 
    ?>  
@endforeach

答案 1 :(得分:1)

您可以获得今天的提示:

$tips = Tip::whereDate('tip_date','=', strftime("%y-%m-%d", strtotime(\Carbon\Carbon::now())))->get();

然后在当前日期的可用提示上运行foreach循环。

答案 2 :(得分:0)

如果您需要在代码中的许多视图中执行此检查,则可以在isToday()模型中实施Tip方法。

在您的模型中

public function isToday()
{
    return $this->date == date('Y-m-d');
}

假设$tips已经是从您拥有的地方正确检索的集合。

在您的刀片视图中

@foreach($tips as $tip)
    @if($tip->isToday())
       /* whatever you want to display */
    @endif
@endforeach

当然这是一个示例,您可能希望根据命名约定和字段格式调整日期检查,例如使用Carbon。

  

建议如果您的提示集实际上是另一个模型的关系,那么您的for可能会有所改变,具体取决于您调用关系的方式以及如何检索它们。