我要做的是为表数据设置服务器端配置。所以我的模型CounterLog
有3个关系集[belongsTo
] category
,location
,user
。我想要一个查询来过滤所有CounterLog
数据,包括关系,设置offset
,limit
和orderBy
方法,同时检索所有已过滤的行,忽略{{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
答案 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();