在laravel中根据时间获取分类

时间:2016-08-29 12:05:24

标签: php laravel laravel-5.2

我正在制作有食物和不同类别的网站,如早餐,午餐,晚餐等。我想做的是当用户进入网站时,它会根据当前时间自动显示该类别。 我的类别表包含字段:

  • ID
  • 名称
  • START_TIME
  • END_TIME

我的控制器是:

public function index()
{
    $now = Carbon::now();
    $Category=DB::table('Categories')
        ->where('Start_time', '>', $now)
        ->where('End_time', '<', $now)
        ->get();

    return view('welcome', compact('Category'));
}

public function categ($Category_id)
{
   $category = Categories::with('food')->findOrFail($Category_id);
   return view('category', compact('category'));
}

路线是:

Route::get('/','DetailsController@index');
Route::get('category/{Category_id}', 'DetailsController@categ');

在我的视图

 @foreach ($Category as $categories) 
 <div class="food-box">
 <button 
 style="font-size:14px; width: 230px; height: 30px; background-color: #00A30C; color:white; font-style: italic; text-align: center; font-size: 15px; margin: 0 auto;">

{{$categories->CategoryName}} </button>

 </div>
 @endforeach

我正在使用Carbon api来获取当前时间。

<?php 
 $mytime = Carbon\Carbon::now();
 echo $mytime->format('l jS \\of F Y, h:i:s A');
?>

我希望它根据当前时间显示我的类别。如果时间间隔不符合,则会显示默认页面。如何在laravel中执行此操作?我是laravel的新手并且没有找到任何有关此问题的解决方案.Thanks

1 个答案:

答案 0 :(得分:0)

试试这个:

$now = Carbon\Carbon::now()
$foods = DB::table('food_table')
            ->where('Start_time', '<', $now)
            ->where('End_time', '>', $now)
            ->get();

这会产生类似的东西:

SELECT * FROM `food_table` WHERE `Start_time` < '2016-08-29 08:38:00' and `End_time` < '2016-08-29 08:38:00'

可替换地:

$now = Carbon\Carbon::now()->format('Y-m-d H:i:s')
$foods = DB::table('food_table')
            ->whereRaw($now . ' BETWEEN Start_time AND End_time')
            ->get();

<强>更新

哦,等等,这应该是'Category',而不是'welcome'

return view('welcome', $Category); // no compact(), change welcome to Category

并且您不需要compact()功能,只需将集合自行传递到视图中,就像我上面所做的那样。如果您仍然遇到问题,请尝试php artisan tinker,然后通过命令行测试您的查询。