【问题标题】:Laravel Filtering data between datesLaravel 过滤日期之间的数据
【发布时间】:2015-05-02 22:53:49
【问题描述】:

我是 Laravel 和 Web 开发的初学者,我有一个愚蠢的问题,我正在构建一个列出用户财务交易的系统。主页中列出了用户进行的所有交易。我在上面放了两个字段来进行交易的日期过滤,但我不知道如何在 Laravel 中进行此过滤。

我正在使用 datepicker,它工作正常,我也知道验证系统允许我使用 Laravel 日期:之后和日期:之前,但我不知道控制器中如何以及以哪种方法发送这些日期。这是我的日期表单代码:

{!! Form::open(['route' => 'transactions.index']) !!}

    {!! Form::label('data_inicio', 'De: ') !!}
    {!! Form::input('date', 'data_inicio', null, ['class' => 'datepicker', 'data-date-format' => 'dd/mm/yy']) !!}

    {!! Form::label('data_fim', 'Até: ') !!}
    {!! Form::input('date', 'data_fim', null, ['class' => 'datepicker', 'data-date-format' => 'dd/mm/yy']) !!}

    {!! Form::submit('Enviar') !!}

{!! Form::close() !!}

controller中调用首页视图的方法是index,这里是index代码:

public function index()
{
    $transactions = Auth::user()->transactions;

    return view('transactions.index', ['transactions' => $transactions]);
}

这是我在视图中显示数据的方式:

@foreach( $transactions as $transaction )
    <tr>
        <td><a href="#">{!! date('d-m-Y', strtotime($transaction->created_at)) !!}</a></td>
        <td><a href="#">{!! $transaction->title !!}</a></td>
        <td>{!! $transaction->amount !!}</td>
    </tr>
@endforeach

当点击 Pesquisar 按钮时,我需要将这些日期发送到相同的方法(索引),以便能够在数据库中仅查找建议日期的交易,问题是我不知道这样做。

我尝试将这些日期作为参数请求发送到 index 方法,修改如下:

public function index(Request $request)

当我单击提交时,我收到了“未找到列”错误,但我没有在方法中的任何查询中使用此请求。 我真的认为它有一个简单的方法,我很感激任何帮助!

这是我的模型类:

class Transaction extends Model {

    protected $table = 'transactions';

    protected $guarded = [];

    public function users()
    {
        return $this->belongsTo('App\User');
    }
}

【问题讨论】:

    标签: laravel filter controller laravel-5


    【解决方案1】:

    试试这个来获取你的控制器中的日期:

    $data_inicio = Input::get('data_inicio');
    $data_fim = Input::get('data_fim');
    

    然后您可以使用日期来查询您的交易关系(假设这是一对多关系并且配置正确)

    $transactions = Transaction::whereBetween('created_at',[$data_inicio, $data_fim])->where('user_id',Auth::id())->get();
    

    【讨论】:

    • 您好,感谢您的帮助!当我按提交时遇到问题,我收到此错误:QueryException in Connection.php line 620SQLSTATE[42S22]: Column not found: 1054 Unknown column 'data_inicio' in 'field list' 它试图在数据库中查找这些列,但我没有在任何查询中使用这些日期。我认为方法调用或参数传递有问题。
    • 你能发布你的模型类吗?为了查看如何将可变量分配给模型中的一个或多个列。
    • 我发布了我的模型类,我相信关系是正确的。我试过你的方式,但我没有收到交易,只有当前用户。我尝试过这种方式:$transactions = Transaction::whereBetween('created_at', array($data_inicio, $data_fim))-&gt;get(); } else { $transactions = Auth::user()-&gt;transactions; } 但它会将所有交易返回给我,而不仅仅是当前用户。
    • 我有一个非常相似的关系,你们之间的帖子非常简单。仅返回两个日期之间的对象。一定是另一个问题。也许在您的用户模型中声明?
    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 2013-05-29
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多