Laravel SQL базы данных пользовательских сообщений теги интерпреируются (публиковать предложения)MySql

Форум по Mysql
Ответить
Anonymous
 Laravel SQL базы данных пользовательских сообщений теги интерпреируются (публиковать предложения)

Сообщение Anonymous »

Это проект Laravel 10, и у меня есть табличные посты < /code> - (title (varchar), категория (varchar), теги (json), postimg, create_at, delete_at).
и планшет user_post_intercrections < /code>, где я хранят (пользователь asper_id, post_id, inventuref_type). Теги, категория.
Как я могу сделать это без переполнения памяти (только с помощью SQL)? < /p>

Код: Выделить всё

$interactedPostIds = UserPostInteractions::where('user_id', Auth::user()->id)
->pluck('post_id');
$page = FacadesRequest::get('page', 1);
$perPage = 10;
//Get hashtags from those posts
$interactedHashtags = Posts::whereIn('id', $interactedPostIds)
->pluck('tags')
->map(function ($tags) {
return json_decode($tags); // Convert JSON string to array
})
->flatten()->countBy()->sortDesc()->keys()->toArray();
$userId = Auth::user()->id;
$posts =  Posts::where('is_approved', 1)
->leftJoin('user_post_interactions', function ($join) use ($userId) {
$join->on('posts.id', '=', 'user_post_interactions.post_id')
->where('user_post_interactions.user_id', '=', $userId);
})
->selectRaw('posts.*, GROUP_CONCAT(DISTINCT user_post_interactions.interaction_type) as interaction_types')
->groupBy('posts.id') // Ensure unique posts
->get();
// Sort using tags match
$sorted = $posts->sortByDesc(function ($post) use ($interactedHashtags) {
$postTags = json_decode($post->tags, true) ?? [];
return count(array_intersect($postTags, $interactedHashtags));
});
$posts = new LengthAwarePaginator(
$sorted->forPage($page, $perPage),
$sorted->count(),
$perPage,
$page,
['path' => FacadesRequest::url(), 'query' => FacadesRequest::query()]
);
В настоящее время я просто вытаскиваю post_id из user_post_interactions и используя его, я выбираю теги 'из пост -таблицы и после этого соответствует этим тегам для ранговых постов по тегам и принять 10 сообщений, чтобы показать пользователю, но когда есть более 1k+ posts, это будет сбит с ачастикой (в других случаях или с ачастими).>

Подробнее здесь: https://stackoverflow.com/questions/796 ... uggestions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»