Staram się stworzyć funkcję w mojej aplikacji internetowej, która pozwoli użytkownikowi zobaczyć posty między dwiema datami. Mam jednak problemy z przekazaniem danych z mojej bazy danych do szablonu bloku. Zamiast pobierać date_created postu otrzymuję datę „1/01/1970”, a numer pracy się nie pojawia.
Najpierw dodałem trasy w moim pliku web.php:
Route::get('/search', function () {
return view('search');
});
Route::post('/select', 'PostController@getDate');
W moim pliku PostController.php dodałem funkcję getDate:
public function getDate(Request $request){
$posts = DB::table('jobs')
->whereBetween('created_at', [$request->fdate, $request->sdate])
->get();
$posts->created_at = $request->created_at;
$posts->job_number = $request->job_number;
return view('result', ['posts' => $posts]);
}
Mój search.blade.php czyli formularz:
<form method="POST" action="/select">
{{ csrf_field() }}
<div class="form-group">
<label>First Date:</label>
<input type="date" class="form-control" name="fdate">
</div>
<div class="form-group">
<label>Second Date:</label>
<input type="date" class="form-control" name="sdate">
</div>
<input type="submit" value="Get Post Between" class="btn btn-primary">
</form>
Mój plik result.blade.php, który pokazuje post.
@if(count( $posts )>0)
<table class="table table-bordered table-striped">
<thead>
<th>Date created</th>
<th>Job Number</th>
</thead>
<tbody>
@foreach($posts as $post)
<tr>
<td>{{ date('j/m/Y', strtotime($posts->created_at)) }}</td>
<td>{{ $posts->job_number }}</td>
</tr>
@endforeach
</tbody>
</table>
@else
<h3 class="text-center">No Post from Selected Range</h3>
@endif
Jestem szczerze zdezorientowany, użyłem poprawnych zmiennych.
1 odpowiedź
Tutaj dołączasz właściwości do obiektu kolekcji, a nie do każdego elementu
$posts->created_at = $request->created_at;
$posts->job_number = $request->job_number;
Aby dodać te właściwości do każdego elementu, powinieneś użyć map() lub zapętlić elementy.
foreach($posts as $post) {
$post->created_at = $request->created_at;
$post->job_number = $request->job_number;
}
Powinieneś użyć pojedynczego posta, a nie całej tablicy, aby uzyskać datę
Zmiana
<td>{{ date('j/m/Y', strtotime($posts->created_at)) }}</td>
Z
<td>{{ date('j/m/Y', strtotime($post->created_at)) }}</td>
Te same rzeczy dla {{ $posts->job_number }}
-> {{ $post->job_number }}
Podobne pytania
Nowe pytania
laravel
Laravel to darmowy framework sieciowy PHP o otwartym kodzie źródłowym, stworzony przez Taylora Otwella i przeznaczony do tworzenia aplikacji internetowych według wzorca architektonicznego model – widok – kontroler (MVC) i oparty na Symfony. Kod źródłowy Laravel jest hostowany na GitHub i licencjonowany na warunkach licencji MIT.