Список всех пользователей и их рецепты - PullRequest
0 голосов
/ 05 сентября 2018

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

  • Пользователь 1
    • Рецепт 1
    • Рецепт 4
  • Пользователь 2
    • Рецепт 2
    • Рецепт 3

и т.д ...

Мой код (см. Ниже) в настоящее время возвращает 3 объекта, каждый из которых содержит один рецепт, но все от 2 пользователей. Можно ли даже построить желаемую структуру (см. Выше), извлекая пользователя и храня его / ее рецепты в массиве / объекте, называемом рецептами?

$recipes = DB::table('users')
->join('recipes', 'users.id', '=', 'recipes.user_id')
->select(
    'recipes.id as recipe_id',
    'recipes.name as recipe_name',
    'recipes.short as short',
    'users.name as user_name'
)
->get();

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Находясь в Laravel, используйте Eloquent.

В вашей пользовательской модели добавьте отношение к рецептам:

public function recipes()
{
    return $this->hasMany('App\Recipe');
}

Чтобы назвать это:

$recepies = App\User::find(1)->recipes;

https://laravel.com/docs/5.6/eloquent-relationships

0 голосов
/ 05 сентября 2018

Я думаю, что это будет работать

$recipes = DB::table('users')
->select(
    'recipes.id as recipe_id',
    'recipes.name as recipe_name',
    'recipes.short as short',
    'users.name as user_name'
)
->where('recipes.user_id', '=', 'users.id')
->get();
0 голосов
/ 05 сентября 2018

Вы не можете получить этот формат с помощью запроса.

Сначала получите users, а затем recipes. Затем отформатируйте их, используя цикл.

OR

Используйте eloquent:)

$recepies = App\User::with('recipes')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...