1
0
mirror of https://github.com/flarum/core.git synced 2025-08-22 16:14:00 +02:00

Use *Raw methods instead of Expression

This commit is contained in:
Toby Zerner
2018-01-11 12:32:09 +10:30
parent 608e42e616
commit 60845eeee7
4 changed files with 10 additions and 13 deletions

View File

@@ -92,10 +92,10 @@ class DiscussionPolicy extends AbstractPolicy
{ {
// Hide discussions which have tags that the user is not allowed to see. // Hide discussions which have tags that the user is not allowed to see.
$query->whereNotExists(function ($query) use ($actor) { $query->whereNotExists(function ($query) use ($actor) {
return $query->select(new Expression(1)) return $query->selectRaw('1')
->from('discussions_tags') ->from('discussions_tags')
->whereIn('tag_id', Tag::getIdsWhereCannot($actor, 'viewDiscussions')) ->whereIn('tag_id', Tag::getIdsWhereCannot($actor, 'viewDiscussions'))
->where('discussions.id', new Expression('discussion_id')); ->whereRaw('discussions.id = discussion_id');
}); });
// Hide discussions with no tags if the user doesn't have that global // Hide discussions with no tags if the user doesn't have that global

View File

@@ -16,7 +16,6 @@ use Flarum\Tags\Tag;
use Flarum\User\AbstractPolicy; use Flarum\User\AbstractPolicy;
use Flarum\User\User; use Flarum\User\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Query\Expression;
class FlagPolicy extends AbstractPolicy class FlagPolicy extends AbstractPolicy
{ {
@@ -36,10 +35,10 @@ class FlagPolicy extends AbstractPolicy
->leftJoin('posts', 'posts.id', '=', 'flags.post_id') ->leftJoin('posts', 'posts.id', '=', 'flags.post_id')
->leftJoin('discussions', 'discussions.id', '=', 'posts.discussion_id') ->leftJoin('discussions', 'discussions.id', '=', 'posts.discussion_id')
->whereNotExists(function ($query) use ($actor) { ->whereNotExists(function ($query) use ($actor) {
return $query->select(new Expression(1)) return $query->selectRaw('1')
->from('discussions_tags') ->from('discussions_tags')
->whereIn('tag_id', Tag::getIdsWhereCannot($actor, 'discussion.viewFlags')) ->whereIn('tag_id', Tag::getIdsWhereCannot($actor, 'discussion.viewFlags'))
->where('discussions.id', new Expression('discussion_id')); ->whereRaw('discussions.id = discussion_id');
}); });
} }
} }

View File

@@ -14,7 +14,6 @@ namespace Flarum\Tags\Gambit;
use Flarum\Search\AbstractRegexGambit; use Flarum\Search\AbstractRegexGambit;
use Flarum\Search\AbstractSearch; use Flarum\Search\AbstractSearch;
use Flarum\Tags\TagRepository; use Flarum\Tags\TagRepository;
use Illuminate\Database\Query\Expression;
class TagGambit extends AbstractRegexGambit class TagGambit extends AbstractRegexGambit
{ {
@@ -48,17 +47,17 @@ class TagGambit extends AbstractRegexGambit
foreach ($slugs as $slug) { foreach ($slugs as $slug) {
if ($slug === 'untagged') { if ($slug === 'untagged') {
$query->orWhereNotExists(function ($query) { $query->orWhereNotExists(function ($query) {
$query->select(new Expression(1)) $query->selectRaw('1')
->from('discussions_tags') ->from('discussions_tags')
->where('discussions.id', new Expression('discussion_id')); ->whereRaw('discussions.id = discussion_id');
}); });
} else { } else {
$id = $this->tags->getIdForSlug($slug); $id = $this->tags->getIdForSlug($slug);
$query->orWhereExists(function ($query) use ($id) { $query->orWhereExists(function ($query) use ($id) {
$query->select(new Expression(1)) $query->selectRaw('1')
->from('discussions_tags') ->from('discussions_tags')
->where('discussions.id', new Expression('discussion_id')) ->whereRaw('discussions.id = discussion_id')
->where('tag_id', $id); ->where('tag_id', $id);
}); });
} }

View File

@@ -16,7 +16,6 @@ use Flarum\Discussion\Event\Searching;
use Flarum\Tags\Gambit\TagGambit; use Flarum\Tags\Gambit\TagGambit;
use Flarum\Tags\Tag; use Flarum\Tags\Tag;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Database\Query\Expression;
class FilterDiscussionListByTags class FilterDiscussionListByTags
{ {
@@ -51,10 +50,10 @@ class FilterDiscussionListByTags
} }
$query->whereNotExists(function ($query) { $query->whereNotExists(function ($query) {
return $query->select(new Expression(1)) return $query->selectRaw('1')
->from('discussions_tags') ->from('discussions_tags')
->whereIn('tag_id', Tag::where('is_hidden', 1)->pluck('id')) ->whereIn('tag_id', Tag::where('is_hidden', 1)->pluck('id'))
->where('discussions.id', new Expression('discussion_id')); ->whereRaw('discussions.id = discussion_id');
}); });
} }
} }