Eloquent 进行长查询

Posted

技术标签:

【中文标题】Eloquent 进行长查询【英文标题】:Eloquent Make a long query 【发布时间】:2018-09-24 15:25:48 【问题描述】:

如何使用多个 where 语句和 orderby 2 种类型进行 Eloquent 查询并对其进行分页或限制?

PostIco::table('posts')
    ->where('listingType', '!=', 1)
    ->OrderBy('listingType', 'created_at')
    ->limit(25)
    ->paginate(10)

如何让它工作?

【问题讨论】:

【参考方案1】:

PostIco 是一个雄辩的模型吗?如果是这样,你就不要在上面使用table 方法。

PostIco::where('listingType', '!=', 1)
    // Instead of OrderBy
    ->orderBy('listingType', 'asc')
    ->orderBy('created_at', 'desc')
    ->limit(25)
    ->paginate(10);

你也可以使用DB facade:

DB::table('posts')
    ->where('listingType', '!=', 1)
    ->orderBy('listingType', 'asc')
    ->orderBy('created_at', 'desc')
    ->limit(25)
    ->paginate(10);

编辑:更正 orderBy 语句

【讨论】:

【参考方案2】:

对于多个 where 子句,您可以这样做:

PostIco::where('listingType', '!=', 1)->where('status', 1) // and you can add chain of wheres
->orderBy('listingType')
->orderBy('created_at', 'desc')
->limit(25)
->paginate(10);
// OR

PostIco::where('listingType', '!=', 1)->orWhere('status', 1) // and you can add chain of wheres and orWheres
->orderBy('listingType', 'asc')
->limit(25)
->paginate(10);

【讨论】:

以上是关于Eloquent 进行长查询的主要内容,如果未能解决你的问题,请参考以下文章

Eloquent:我需要做这个原始查询吗?

根据另一个 eloquent 查询的结果在循环中运行 eloquent 并在刀片中显示列表

加速 Eloquent 查询

SQL 查询到 Eloquent 的转换

Laravel Eloquent Where , orWhere 和 Find 在同一个 eloquent 查询中的问题

Laravel / Eloquent - 无法执行原始查询