@lemonlimelike

Как получить данные из таблице через другую Laravel?

Всем добрый вечер. Нужна помощь, Есть таблица matches
public function up()
    {
        Schema::create('matches', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id');
            $table->string('team_one');
            $table->string('team_two');
            $table->string('status');
            $table->string('factor');
            $table->string('st');
            $table->string('sd');
            $table->string('sk');
            $table->timestamps();
        });
    }


И есть таблица users
public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }


Как видно в таблице matches есть поле user_id, по которому нужно достать поле name из таблице users.
Как это сделать? Нужны ли здесь использовать связь, и какое? И есть ли статья, в каких случаях какую связь лучше всего использовать, желательно на русском
  • Вопрос задан
  • 1275 просмотров
Решения вопроса 2
solotony
@solotony
покоряю пик Балмера
ты работаешь с таблицами, но Laravel есть ORM (Eloquent) в которой ты описываешь модели.

И уже для своих моделей (Например User и Match) ты установишь связи
HasMany (у User ) и BelongsTo (у Match)
Ответ написан
Комментировать
Astatroth
@Astatroth
Я тут случайно
Допустим, отношение у вас один User ко многим Match, тогда:

/* User model */
...
public function matches()
{
    return $this->hasMany(Match::class, 'user_id', 'id');
}
...


/* Match model */
...
public function user()
{
    return $this->belongsTo(User::class, 'user_id', 'id');
}
...


Теперь достаем пользователя:
$match = Match::find($id);
$user = $match->user->name;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы