mirror of
https://github.com/flarum/framework.git
synced 2024-12-05 00:43:39 +08:00
Wrap column names; use whereColumn where possible
This commit is contained in:
parent
7474290138
commit
05c8e12761
|
@ -19,7 +19,7 @@ return [
|
||||||
$schema->getConnection()
|
$schema->getConnection()
|
||||||
->table('access_tokens')
|
->table('access_tokens')
|
||||||
->whereNotExists(function ($query) {
|
->whereNotExists(function ($query) {
|
||||||
$query->selectRaw(1)->from('users')->whereRaw('id = user_id');
|
$query->selectRaw(1)->from('users')->whereColumn('id', 'user_id');
|
||||||
})
|
})
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ return [
|
||||||
|
|
||||||
$selectId = function ($table, $column) use ($connection) {
|
$selectId = function ($table, $column) use ($connection) {
|
||||||
return new Expression(
|
return new Expression(
|
||||||
'('.$connection->table($table)->whereRaw("id = $column")->select('id')->toSql().')'
|
'('.$connection->table($table)->whereColumn('id', $column)->select('id')->toSql().')'
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -19,10 +19,10 @@ return [
|
||||||
$connection = $schema->getConnection();
|
$connection = $schema->getConnection();
|
||||||
$connection->table('discussion_user')
|
$connection->table('discussion_user')
|
||||||
->whereNotExists(function ($query) {
|
->whereNotExists(function ($query) {
|
||||||
$query->selectRaw(1)->from('users')->whereRaw('id = user_id');
|
$query->selectRaw(1)->from('users')->whereColumn('id', 'user_id');
|
||||||
})
|
})
|
||||||
->orWhereNotExists(function ($query) {
|
->orWhereNotExists(function ($query) {
|
||||||
$query->selectRaw(1)->from('discussions')->whereRaw('id = discussion_id');
|
$query->selectRaw(1)->from('discussions')->whereColumn('id', 'discussion_id');
|
||||||
})
|
})
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ return [
|
||||||
$schema->getConnection()
|
$schema->getConnection()
|
||||||
->table('email_tokens')
|
->table('email_tokens')
|
||||||
->whereNotExists(function ($query) {
|
->whereNotExists(function ($query) {
|
||||||
$query->selectRaw(1)->from('users')->whereRaw('id = user_id');
|
$query->selectRaw(1)->from('users')->whereColumn('id', 'user_id');
|
||||||
})
|
})
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ return [
|
||||||
$schema->getConnection()
|
$schema->getConnection()
|
||||||
->table('group_permission')
|
->table('group_permission')
|
||||||
->whereNotExists(function ($query) {
|
->whereNotExists(function ($query) {
|
||||||
$query->selectRaw(1)->from('groups')->whereRaw('id = group_id');
|
$query->selectRaw(1)->from('groups')->whereColumn('id', 'group_id');
|
||||||
})
|
})
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
|
|
|
@ -19,10 +19,10 @@ return [
|
||||||
$schema->getConnection()
|
$schema->getConnection()
|
||||||
->table('group_user')
|
->table('group_user')
|
||||||
->whereNotExists(function ($query) {
|
->whereNotExists(function ($query) {
|
||||||
$query->selectRaw(1)->from('users')->whereRaw('id = user_id');
|
$query->selectRaw(1)->from('users')->whereColumn('id', 'user_id');
|
||||||
})
|
})
|
||||||
->orWhereNotExists(function ($query) {
|
->orWhereNotExists(function ($query) {
|
||||||
$query->selectRaw(1)->from('groups')->whereRaw('id = group_id');
|
$query->selectRaw(1)->from('groups')->whereColumn('id', 'group_id');
|
||||||
})
|
})
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
|
|
|
@ -19,14 +19,14 @@ return [
|
||||||
$schema->getConnection()
|
$schema->getConnection()
|
||||||
->table('notifications')
|
->table('notifications')
|
||||||
->whereNotExists(function ($query) {
|
->whereNotExists(function ($query) {
|
||||||
$query->selectRaw(1)->from('users')->whereRaw('id = user_id');
|
$query->selectRaw(1)->from('users')->whereColumn('id', 'user_id');
|
||||||
})
|
})
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
$schema->getConnection()
|
$schema->getConnection()
|
||||||
->table('notifications')
|
->table('notifications')
|
||||||
->whereNotExists(function ($query) {
|
->whereNotExists(function ($query) {
|
||||||
$query->selectRaw(1)->from('users')->whereRaw('id = from_user_id');
|
$query->selectRaw(1)->from('users')->whereColumn('id', 'from_user_id');
|
||||||
})
|
})
|
||||||
->update(['from_user_id' => null]);
|
->update(['from_user_id' => null]);
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ return [
|
||||||
$connection = $schema->getConnection();
|
$connection = $schema->getConnection();
|
||||||
$connection->table('password_tokens')
|
$connection->table('password_tokens')
|
||||||
->whereNotExists(function ($query) {
|
->whereNotExists(function ($query) {
|
||||||
$query->selectRaw(1)->from('users')->whereRaw('id = user_id');
|
$query->selectRaw(1)->from('users')->whereColumn('id', 'user_id');
|
||||||
})
|
})
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ return [
|
||||||
|
|
||||||
$selectId = function ($table, $column) use ($connection) {
|
$selectId = function ($table, $column) use ($connection) {
|
||||||
return new Expression(
|
return new Expression(
|
||||||
'('.$connection->table($table)->whereRaw("id = $column")->select('id')->toSql().')'
|
'('.$connection->table($table)->whereColumn('id', $column)->select('id')->toSql().')'
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ class DiscussionRepository
|
||||||
{
|
{
|
||||||
return Discussion::leftJoin('discussions_users', 'discussions_users.discussion_id', '=', 'discussions.id')
|
return Discussion::leftJoin('discussions_users', 'discussions_users.discussion_id', '=', 'discussions.id')
|
||||||
->where('user_id', $user->id)
|
->where('user_id', $user->id)
|
||||||
->whereRaw('last_read_post_number >= last_post_number')
|
->whereColumn('last_read_post_number', '>=', 'last_post_number')
|
||||||
->pluck('id')
|
->pluck('id')
|
||||||
->all();
|
->all();
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,22 +33,29 @@ class FulltextGambit implements GambitInterface
|
||||||
// See https://bugs.mysql.com/bug.php?id=74042
|
// See https://bugs.mysql.com/bug.php?id=74042
|
||||||
$bit = str_replace('@', '*', $bit);
|
$bit = str_replace('@', '*', $bit);
|
||||||
|
|
||||||
$search->getQuery()
|
$query = $search->getQuery();
|
||||||
->selectRaw('SUBSTRING_INDEX(GROUP_CONCAT(posts.id ORDER BY MATCH(posts.content) AGAINST (?) DESC), \',\', 1) as most_relevant_post_id', [$bit])
|
$grammar = $query->getGrammar();
|
||||||
|
|
||||||
|
$query
|
||||||
|
->selectRaw('SUBSTRING_INDEX(GROUP_CONCAT('.$grammar->wrap('posts.id').' ORDER BY MATCH('.$grammar->wrap('posts.content').') AGAINST (?) DESC), \',\', 1) as most_relevant_post_id', [$bit])
|
||||||
->leftJoin('posts', 'posts.discussion_id', '=', 'discussions.id')
|
->leftJoin('posts', 'posts.discussion_id', '=', 'discussions.id')
|
||||||
->where('posts.type', 'comment')
|
->where('posts.type', 'comment')
|
||||||
->where(function ($query) use ($search) {
|
->where(function ($query) use ($search) {
|
||||||
event(new ScopeModelVisibility(Post::query()->setQuery($query), $search->getActor(), 'view'));
|
event(new ScopeModelVisibility(Post::query()->setQuery($query), $search->getActor(), 'view'));
|
||||||
})
|
})
|
||||||
->where(function ($query) use ($bit) {
|
->where(function ($query) use ($bit) {
|
||||||
$query->whereRaw('MATCH(discussions.title) AGAINST (? IN BOOLEAN MODE)', [$bit])
|
$grammar = $query->getGrammar();
|
||||||
->orWhereRaw('MATCH(posts.content) AGAINST (? IN BOOLEAN MODE)', [$bit]);
|
|
||||||
|
$query->whereRaw('MATCH('.$grammar->wrap('discussions.title').') AGAINST (? IN BOOLEAN MODE)', [$bit])
|
||||||
|
->orWhereRaw('MATCH('.$grammar->wrap('posts.content').') AGAINST (? IN BOOLEAN MODE)', [$bit]);
|
||||||
})
|
})
|
||||||
->groupBy('posts.discussion_id');
|
->groupBy('posts.discussion_id');
|
||||||
|
|
||||||
$search->setDefaultSort(function ($query) use ($bit) {
|
$search->setDefaultSort(function ($query) use ($bit) {
|
||||||
$query->orderByRaw('MATCH(discussions.title) AGAINST (?) desc', [$bit]);
|
$grammar = $query->getGrammar();
|
||||||
$query->orderByRaw('MATCH(posts.content) AGAINST (?) desc', [$bit]);
|
|
||||||
|
$query->orderByRaw('MATCH('.$grammar->wrap('discussions.title').') AGAINST (?) desc', [$bit]);
|
||||||
|
$query->orderByRaw('MATCH('.$grammar->wrap('posts.content').') AGAINST (?) desc', [$bit]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,13 +121,9 @@ class Post extends AbstractModel
|
||||||
|
|
||||||
// Make sure the post's discussion is visible as well
|
// Make sure the post's discussion is visible as well
|
||||||
$query->whereExists(function ($query) use ($actor) {
|
$query->whereExists(function ($query) use ($actor) {
|
||||||
$grammar = $query->getGrammar();
|
|
||||||
$column1 = $grammar->wrap('discussions.id');
|
|
||||||
$column2 = $grammar->wrap('posts.discussion_id');
|
|
||||||
|
|
||||||
$query->selectRaw('1')
|
$query->selectRaw('1')
|
||||||
->from('discussions')
|
->from('discussions')
|
||||||
->whereRaw("$column1 = $column2");
|
->whereColumn('discussions.id', 'posts.discussion_id');
|
||||||
|
|
||||||
static::$dispatcher->dispatch(
|
static::$dispatcher->dispatch(
|
||||||
new ScopeModelVisibility(Discussion::query()->setQuery($query), $actor, 'view')
|
new ScopeModelVisibility(Discussion::query()->setQuery($query), $actor, 'view')
|
||||||
|
|
|
@ -86,7 +86,7 @@ class PostPolicy extends AbstractPolicy
|
||||||
->orWhereExists(function ($query) use ($actor) {
|
->orWhereExists(function ($query) use ($actor) {
|
||||||
$query->selectRaw('1')
|
$query->selectRaw('1')
|
||||||
->from('discussions')
|
->from('discussions')
|
||||||
->whereRaw('discussions.id = posts.discussion_id')
|
->whereColumn('discussions.id', 'posts.discussion_id')
|
||||||
->where(function ($query) use ($actor) {
|
->where(function ($query) use ($actor) {
|
||||||
$this->events->dispatch(
|
$this->events->dispatch(
|
||||||
new ScopeModelVisibility(Discussion::query()->setQuery($query), $actor, 'hidePosts')
|
new ScopeModelVisibility(Discussion::query()->setQuery($query), $actor, 'hidePosts')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user