列出所有用户及其食谱

时间:2018-09-05 08:06:46

标签: php laravel-5

我正在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 :(得分:2)

在Laravel中,使用口才。

在您的用户模型中,将关系添加到配方:

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

要调用它:

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

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

答案 1 :(得分:1)

您无法使用查询获取此格式。

首先获取users,然后获取recipes。 然后使用循环格式化它们。

OR

使用雄辩的:)

$recepies = App\User::with('recipes')->get();

答案 2 :(得分:-1)

我认为这会起作用

$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();