Я работаю над каким-то приложением laravel, и у меня есть таблица, называемая «записи», я сохраняю в этой таблице рекомендации по названию для конкурса.Мне нужно упорядочить записи, исходя из того, сколько всего пользователей имеет.
это моя таблица:
id user_id contest_id name liked
1 1 1 test.com true
2 4 1 cool.com false
3 1 1 code.com true
4 3 1 tool123.com false
5 2 1 a23423.com true
6 3 1 dole.net true
7 1 1 great.com false
8 2 1 domain.com true
9 2 1 gol.com false
10 2 1 greatcode.com true
11 2 2 greatco.com true
12 2 2 greatmap.com true
это то, что у меня есть:
$entries = ContestEntry::where('contest_id', '=', $contest->id)
->orderBy('liked', 'desc')
->orderBy('created_at', 'desc')
->get();
Мне нужно упорядочить записи по:
заданному значению $test-> id (1-я строка), если запись нравится или нет (2-я строка) записей, где у пользователя больше лайков (глобально), а не текущий конкурс) и от create_at (3-я строка)
Схема:
Schema::create('contest_entries', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->integer('contest_id');
$table->text('name');
$table->text('comment')->nullable();
$table->boolean('liked')->default(false);
$table->boolean('available')->default(true);
$table->timestamp('checked_at');
$table->timestamps();
});
вывод команды "show create tabletest_entries":
CREATE TABLE `contest_entries` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`contest_id` int(11) NOT NULL,
`name` text COLLATE utf8mb4_unicode_ci NOT NULL,
`comment` text COLLATE utf8mb4_unicode_ci,
`liked` tinyint(1) NOT NULL DEFAULT '0',
`available` tinyint(1) NOT NULL DEFAULT '1',
`checked_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
мне нужна таблица, показанная ниже:
id user_id contest_id name liked
5 2 1 a23423.com true
8 2 1 domain.com true
9 2 1 gol.com false
10 2 1 greatcode.com true
1 1 1 test.com true
3 1 1 code.com true
7 1 1 great.com false
4 3 1 tool123.com false
6 3 1 dole.net true
2 4 1 cool.com false
, поскольку вы можете видеть, что она показывает только данные изtest_id 1, user_id 2 имеет 5 лайков = true во всех конкурсах, поэтому его записи 1-й, user_id 1имеет 2 понравилось = true, поэтому его записи 2-й .. и продолжайте ...