@theEternalStudent

Как правильно сделать объединение таблиц, так, чтобы в первой таблице столбец с user_id заменился на username из второй таблицы?

Как правильно сделать объединение таблиц, так, чтобы в первой таблице столбец с user_id заменился на username из второй таблицы?

У меня есть таблицы posts в которой есть user_id(int), которые я хочу заменить на username из таблицы users, в которой есть id(int). Я написал такой вот запрос:

$posts = DB::table('posts')
			->join('users', 'posts.user_id', '=', 'users.id')
			->orderBy('publish_at', 'desc')->get()


Что я сделал не так?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
abler98
@abler98
Software Engineer
В модели Post:
public function user()
{
  return $this->belongsTo(User::class);
}

Потом:
Post::with('user')->orderBy('publish_at', 'desc')->get();

Тогда у каждого поста будет значение user.

Или так:
$posts = DB::table('posts')->select(DB::raw('posts.*, users.username'))
      ->join('users', 'posts.user_id', '=', 'users.id')
      ->orderBy('publish_at', 'desc')->get();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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