【Laravel 쿼리 빌더】where내에서 변수를 사용해 기간의 조건을 좁히는 방법
버전은 6계입니다.
블로그에서 다음과 같은 기사도 쓰고 있습니다.
목표
기간의 시작일과 종료일이 있고, 기간 내의 데이터를 취득한다.
시작일:2021-06-01
종료일:2021-06-29
user_id
created_at
1
2021-06-01 12:21:33
2
2021-06-15 15:53:22
3
2021-06-30 09:22:12
↓
user_id
created_at
1
2021-06-01 12:21:33
2
2021-06-15 15:53:22
샘플 코드
컨트롤러 (PostController.php)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Post;←バージョン8系なら use App\Models\Post;
class PostController extends Controller
{
public function index()
{
$this->posts = new Post();
$start = '2021-06-01';
$end = '2021-06-29';
$results = $this->posts->getUser($start, $end);
return view('posts.index', compact(
'results',
));
}
}
$start,$end에 시작일과 종료일을 설정하고 인수로 모델에 변수를 전달합니다.
모델 (Post.php)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;←記述を忘れない
class Post extends Model
{
public function getUser($start, $end)
{
return DB::table('posts')
->select('user_id', 'created_at')
->where([
['created_at', '>=', $start],
['created_at', '<=', $end]
])
->get();
}
}
모델에 논리를 씁니다.
where에서 대상 기간을 지정합니다.
덧붙여서
->whereBetween('created_at', [$start, $end])
에서도 같은 처리를 할 수 있습니다.이쪽이 컴팩트하고 좋습니다.
뷰(index.blade.php)
<table>
<thead>
<tr>
<th>日付</th>
<th>ユーザーID</th>
</tr>
</thead>
<tbody>
@foreach ($results as $result)
<tr>
<td>{{ $result->created_at }}</td>
<td>{{ $result->user_id }}</td>
</tr>
@endforeach
</tbody>
</table>
이런 식으로 데이터를 얻을 수있었습니다.
만약 참고가 되면 잊지 않고 기사의 스톡 또는 LGTM를 부탁드리겠습니다.
블로그에서 다음과 같은 기사도 쓰고 있습니다.
Reference
이 문제에 관하여(【Laravel 쿼리 빌더】where내에서 변수를 사용해 기간의 조건을 좁히는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kamome_susume/items/c15e8db051a7c33100fa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)