如何在雄辩的多关系字段中使用count和orderBy?

时间:2018-05-06 19:08:35

标签: php eloquent sql-order-by relationship

我要做的是为表数据设置服务器端配置。所以我的模型CounterLog有3个关系集[belongsTo] categorylocationuser。我想要一个查询来过滤所有CounterLog数据,包括关系,设置offsetlimitorderBy方法,同时检索所有已过滤的行,忽略{{1 }和offset。以下是我迄今为止所管理的内容,也许可以更好地理解我想要的内容:

limit

在最后一行我正在使用$search_query = function($q) use ($search) { $q->where('name', 'like', '%' . $search . '%'); }; $query = CounterLog::where('created_at', 'like', '%' . $search . '%') ->orWhereHas('category', $search_query) ->orWhereHas('location', $search_query) ->orWhereHas('user', $search_query); $logs = $query->offset($offset)->limit($limit)->get(); $logs_total = $query->offset(0)->count(); ,因为出于某种原因,$query->offset(0)设置为数字offset变为0.我不确定这是正确的方法做到了..但即使这样,我也不知道如何使用$logs_total作为前者。 orderBy

我知道我总能在口才中使用原始查询,但我想知道是否有办法使用ORM和关系。如果你能帮助我,我真的很感激...因为斗争是真实的。

非常感谢:)

显然我没有ORM的解决方案所以我用“原始”查询做到了:

category.name

1 个答案:

答案 0 :(得分:1)

尝试交换语句:

$logs_total = $query->count();
$logs = $query->offset($offset)->limit($limit)->get();

或克隆基本查询,如下所示:

$total_count_query = clone $query;
$logs = $query->offset($offset)->limit($limit)->get();
$logs_total = $total_count_query->count();
相关问题