代码之家  ›  专栏  ›  技术社区  ›  Tomjesch

列出所有用户及其食谱

  •  1
  • Tomjesch  · 技术社区  · 6 年前

    我正在为我的鸡尾酒应用程序编写一个自定义数据库查询。目标是检索以下结构:

    • 用户1
      • 配方1
      • 配方4
      • 配方2
      • 配方3

    等。。。

    我的代码(见下文)目前返回3个对象,都包含一个配方,但都来自2个用户。甚至可以构建所需的结构(见上文),检索用户并将其食谱存储在名为recipes的数组/对象中吗?

    $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 回复  |  直到 6 年前
        1
  •  2
  •   sskoko    6 年前

    在拉雷维尔时,使用雄辩的语言。

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

    称之为:

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

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

        2
  •  1
  •   Aaqib Khan    6 年前

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

    第一次提取 users recipes . 然后使用循环格式化它们。

    或者

    使用雄辩的:)

    $recepies = App\User::with('recipes')->get();
    
        3
  •  -1
  •   David Ben-Gurion    6 年前

    我想这样行得通

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