其中语法在Laravel 5中具有分页功能、搜索功能


Where syntax in Laravel 5 with paginate feature, search feature

在我的网站上,用户可以看到个人数据,按数据或日期搜索,并看到分页结果。

我有麻烦得到一个用户的分页数据与他的"userID"使用->where关键字需要集成在一个搜索功能。

然而,我有逻辑错误,想知道是否有人可以帮助我。


这是我的控制器

    public function index()
{
    $q='';
    $from = '';
    $to = '';
    if (Input::get('dateSearchFrom') !='' && Input::get('dateSearchTo') !='') {
        $from = Input::get('dateSearchFrom').' 00:00:00.000';
        $to = Input::get('dateSearchTo').' 23:59:59.999';
    }else if (Input::get('search') !='') {
        $q = Input::get('search');
    }
    if ($q != '') {
        $incomes = Income::latest('created_at')->where('user_id', Auth::user()->id)->orWhere('name','like','%'.$q.'%')->orWhere('money','like','%'.$q.'%')->orWhere('created_at','like','%'.$q.'%')->paginate(4);
    }else if (Input::get('dateSearchFrom') !='' && Input::get('dateSearchTo') !='') {
        $incomes = Income::latest('created_at')->where('user_id', Auth::user()->id)->orWhereBetween('created_at', array($from, $to))->paginate(4);
    }else{
        $incomes = Income::latest('created_at')->where('user_id', Auth::user()->id)->paginate(4);
    }
    $incomes->setPath('income');
    return view('member.income.list')->with([
        'title' => 'Income Data',
        'incomes' => $incomes,
        ]);
}

这是我的模型

    use SoftDeletes;
protected $table = 'incomes';
protected $fillable = [
    'id',
    'name',
    'user_id',
    'description',
    'money'
];

更新

我意识到在我发布这个之后,建议的语法也是不正确的。你没有给出太多的错误,所以很难解决你的问题。我找不到Model::latest(),但我认为你已经覆盖了。

看起来好像您正在尝试按降序按created_at排序对结果进行分页。如果是这样,这将是正确的语法:

$incomes = Income::where('user_id', Auth::user()->id)->orderBy('created_at', 'desc')->paginate(4);

我错误地认为->get()是所有必要的,因为我相信它在我的副本上工作,但我遇到了一个错误。

原来

你试过使用->get()吗?像这样:

$incomes = Income::latest('created_at')->where('user_id', Auth::user()->id)->get()->paginate(4);`