mirror of
https://github.com/flarum/framework.git
synced 2025-02-21 07:38:08 +08:00
Remove total results from discussion searching
It’s too inefficient (requires a whole table scan) to do a query like: select count(*) from discussions where [conditions determining visibility]
This commit is contained in:
parent
c1e3820480
commit
64e6b7d26c
@ -74,11 +74,7 @@ class IndexAction extends SerializeCollectionAction
|
||||
$load = array_merge($request->include, ['state']);
|
||||
$results = $this->searcher->search($criteria, $request->limit, $request->offset, $load);
|
||||
|
||||
if (($total = $results->getTotal()) !== null) {
|
||||
$response->content->addMeta('total', $total);
|
||||
}
|
||||
|
||||
static::addPaginationLinks($response, $request, route('flarum.api.discussions.index'), $total ?: $results->areMoreResults());
|
||||
static::addPaginationLinks($response, $request, route('flarum.api.discussions.index'), $results->areMoreResults());
|
||||
|
||||
return $results->getDiscussions();
|
||||
}
|
||||
|
@ -6,13 +6,10 @@ class DiscussionSearchResults
|
||||
|
||||
protected $areMoreResults;
|
||||
|
||||
protected $total;
|
||||
|
||||
public function __construct($discussions, $areMoreResults, $total)
|
||||
public function __construct($discussions, $areMoreResults)
|
||||
{
|
||||
$this->discussions = $discussions;
|
||||
$this->areMoreResults = $areMoreResults;
|
||||
$this->total = $total;
|
||||
}
|
||||
|
||||
public function getDiscussions()
|
||||
@ -20,11 +17,6 @@ class DiscussionSearchResults
|
||||
return $this->discussions;
|
||||
}
|
||||
|
||||
public function getTotal()
|
||||
{
|
||||
return $this->total;
|
||||
}
|
||||
|
||||
public function areMoreResults()
|
||||
{
|
||||
return $this->areMoreResults;
|
||||
|
@ -63,8 +63,6 @@ class DiscussionSearcher implements SearcherInterface
|
||||
|
||||
$this->gambits->apply($criteria->query, $this);
|
||||
|
||||
$total = $this->query->count();
|
||||
|
||||
$sort = $criteria->sort ?: $this->defaultSort;
|
||||
|
||||
foreach ($sort as $field => $order) {
|
||||
@ -112,6 +110,6 @@ class DiscussionSearcher implements SearcherInterface
|
||||
Discussion::setStateUser($this->user);
|
||||
$discussions->load($load);
|
||||
|
||||
return new DiscussionSearchResults($discussions, $areMoreResults, $total);
|
||||
return new DiscussionSearchResults($discussions, $areMoreResults);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user