In diesem Tutorial zeigen wir Ihnen, wie Sie in Laravel Daten zwischen zwei Daten abrufen. Sie können mehr als Beispiele zum Abrufen von Datensätzen zwischen zwei Daten in Laravel verwenden, indem Sie die beredten Methoden whereBetween() , where() , whereDate() verwenden.
Zuerst verwenden wir die Laravel-Inbuild-Methode whereBetween() , um Datensätze zwischen zwei Daten abzurufen.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Post;
class PostController extends Controller
{
public function index(Request $request)
{
$startDate = '2023-01-07';
$endDate = '2023-07-30';
$posts = Post::whereBetween('created_at', [$startDate, $endDate])->get();
return $posts;
}
}
Um Daten zwischen zwei Daten abzurufen, können wir die Carbon-Methoden startOfDay() und endOfDay() verwenden . Diese Methoden funktionieren genauso wie im obigen Beispiel:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Post;
use Carbon\Carbon;
class PostController extends Controller
{
public function index(Request $request)
{
$startDate = Carbon::createFromFormat('Y-m-d', '2023-07-01')->startOfDay();
$endDate = Carbon::createFromFormat('Y-m-d', '2022-07-30')->endOfDay();
$posts = Post::whereBetween('created_at', [$startDate, $endDate])->get();
return $posts;
}
}
Eloquent bietet eine sehr hilfreiche Methode whereDate() , die zwei Dinge tut
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Post;
use Carbon\Carbon;
class PostController extends Controller
{
public function index(Request $request)
{
$startDate = Carbon::createFromFormat('Y-m-d', '2023-07-01');
$endDate = Carbon::createFromFormat('Y-m-d', '2023-07-30');
$posts = Post::whereDate('created_at', '>=', $startDate)
->whereDate('created_at', '<=', $endDate)
->get();
return $posts;
}
}
Hier das Beispiel, in dem Sie Daten zwischen zwei verschiedenen Spalten abrufen können. Hier erhalten wir die Spalten „start_at“ und „end_at“. Sie können dies ausprobieren.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Carbon\Carbon;
class UserController extends Controller
{
public function index(Request $request)
{
$startDate = Carbon::createFromFormat('Y-m-d', '2023-07-01');
$endDate = Carbon::createFromFormat('Y-m-d', '2023-07-30');
$users = User::whereDate('start_at', '>=', $startDate)
->whereDate('end_at', '<=', $endDate)
->get();
return $users;
}
}
Wir könnten MySQL auch explizit mitteilen, dass uns nur das Datum wichtig ist, indem wir DATE() verwenden . Die von uns gewünschte Abfrage lautet wie folgt:
SELECT * FROM posts WHERE DATE(created_at) BETWEEN '2023-07-01' AND '2023-07-30'
Auf diese Weise vergleichen wir Daten mit Daten und nicht mit einer Datetime. Wir müssen darauf zurückgreifen, um DB:raw()dies mit Eloquent zu reproduzieren, was so aussehen würde:
$startDate = '2023-07-01';
$endDate = '2023-07-30';
Post::whereBetween(DB::raw('DATE(created_at)'), [$startDate, $endDate])->get();
Viel Spaß beim Codieren!!!