【问题标题】:Unable to collect data from my PostController using Laravel无法使用 Laravel 从我的 PostController 收集数据
【发布时间】:2018-11-23 22:12:01
【问题描述】:

我正在尝试在我的 Web 应用程序上创建一个功能,允许用户查看两个日期之间的帖子。但是,我在尝试将数据从数据库传递到刀片模板时遇到问题。我没有检索帖子的 created_at 日期,而是收到日期“1/01/1970”并且没有出现工作编号。

首先我在 web.php 文件中添加了路由:

Route::get('/search', function () {
    return view('search');
});

Route::post('/select', 'PostController@getDate');

在我的 PostController.php 文件中,我添加了我的 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]);
    }

我的 search.blade.php 是这样的形式:

<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>

显示帖子的我的 result.blade.php 文件。

@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

我真的很困惑,我使用了正确的变量。

【问题讨论】:

    标签: laravel laravel-5 eloquent


    【解决方案1】:

    在这里,您将属性附加到集合对象而不是每个元素

    $posts->created_at = $request->created_at;
    $posts->job_number = $request->job_number;
    

    要将这些属性添加到每个元素,您应该使用 map() 或循环元素。

    foreach($posts as $post) {
        $post->created_at = $request->created_at;
        $post->job_number = $request->job_number;
    }
    

    您应该使用单个帖子而不是整个数组来获取日期

    改变

    <td>{{ date('j/m/Y', strtotime($posts->created_at)) }}</td>
    

    <td>{{ date('j/m/Y', strtotime($post->created_at)) }}</td>
    

    {{ $posts-&gt;job_number }} 也一样 -> {{ $post-&gt;job_number }}

    【讨论】:

      猜你喜欢
      • 2020-02-07
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 2015-08-11
      • 1970-01-01
      • 2016-11-04
      相关资源
      最近更新 更多