Каков наилучший способ хранения массива с идентификаторами, связанными с другой таблицей, в базе данных MySQL? - PullRequest
1 голос
/ 11 июля 2019

Я создаю приложение с Laravel, чтобы предсказать порядок результатов соревнования.Итак, я составил таблицу с участниками, и теперь я хочу, чтобы пользователь предсказал порядок результатов участников и сохранил его в базе данных.

Так, например, есть 6 участников (в таблице базы данных), и я хочупредсказать результат.Я бы сказал:

  1. Участник 4
  2. Участник 5
  3. Участник 2
  4. Участник 1
  5. Участник 6
  6. Участник 3

Я создал таблицу под названием «прогнозы», и там я хочу сохранить «Идентификатор пользователя» и прогноз.На самом деле это массив с идентификаторами участников.Но каков наилучший способ сохранить и восстановить это?

Большое спасибо за помощь.

Рональд.

1 Ответ

0 голосов
/ 12 июля 2019

Спасибо, Тим, за ваш ответ и, конечно, я покажу вам, что я сделал.

Итак, у меня была обычная модель пользователя и модель участника.Что мне было нужно, так это связь между Пользователем, которая предсказывает результат / рейтинг модели Участника:

Пример: - Я Пользователь (Рональд) - Есть 6 Участников (P1, P2, P3, P4,P5, P6) - Я должен предсказать, в каком порядке участники будут «пересекать финишную черту».

Таким образом, я сделал таблицу, по предложению Тима, под названием «предсказания» с помощью модели Prediction.И там я буду хранить рейтинг «Пользователь - участник - прогноз».

В ближайшем будущем я посмотрю, как можно хранить несколько прогнозов.Пока все в порядке!

Схема будет выглядеть следующим образом:

Schema::create('predictions', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->unsignedBigInteger('user_id');
    $table->unsignedBigInteger('participant_id');
    $table->unsignedTinyInteger('position');
    $table->foreign('user_id')
        ->references('id')
        ->on('users');
    $table->foreign('participant_id')
        ->references('id')
        ->on('participants');
    $table->timestamps();
});

И вот как выглядит модель прогнозирования:

class Prediction extends Model
{
    public function user()
    {
        return $this->belongsTo('App\User');
    }

    public function participant()
    {
        return $this->belongsTo('App\Participant');
    }
}

Поэтому, когда я вошел в систему, я могу получить свой прогноз, выполнив:

Auth::user()->predictions()->orderBy('position')->get();

И когда у меня есть прогноз, я могу получить участника прогноза:

$prediction->participant;

И пользователь прогноза по:

$prediction->user;

Но теперь я могу сделать только один прогноз на пользователя.Мне нужно найти способ связать пользователя с прогнозом, а затем комбинацию участника и позиции с прогнозом.

Так что я могу сказать, получить все прогнозы пользователя.Может быть, у кого-нибудь (или Тима;)) есть предложение?!

Спасибо, и я надеюсь, что кто-то найдет ответы на некоторые вопросы в моем ответе.

Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...