首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel模型嵌套查询

Laravel模型嵌套查询
EN

Stack Overflow用户
提问于 2016-09-01 20:42:45
回答 1查看 233关注 0票数 1

我试图编写一个查询,以便从数据库中获得完整的用户膳食。问题是我无法从diet_food表中获取数据。这是我的桌子:

  • diet_settings (id,total_days等)。关于使用者饮食的基本信息。
  • eating_types (id,diet_id,eating_time等)。有关早餐、午餐等的信息。
  • diet_food (id、eating_type_id、product等)。与每一种饮食类型相关的食物。

这是我在控制器类中使用的查询:

代码语言:javascript
复制
$diet = Diet::with("eatingType.dietFood")->get()->find($id)->toArray();

因此,当我使用var_dump()时,如下所示:

代码语言:javascript
复制
array (size=7)
'id' => int 2
'user_id' => int 1
'total_days' => int 1
'total_eating' => int 6
'notes' => string '' (length=0)
'created' => string '2016-09-01' (length=10)
'eating_type' => 
    array (size=3)
      0 => 
         array (size=6)
           'id' => int 7
           'diet_id' => int 2
           'eating_time' => string '8:00' (length=4)
           'eating_type' => string 'Breakfast' (length=10)
           'recommended_rate' => int 0
           'diet_food' => 
               array (size=0)
                   ...
      1 => 
        array (size=6)
          'id' => int 8
          'diet_id' => int 2
          'eating_time' => string '12:00' (length=5)
          'eating_type' => string 'Lunch' (length=14)
          'recommended_rate' => int 0
          'diet_food' => 
              array (size=0)
                 ... 

在数组中,即使我将数据存储在数据库中,diet_food仍然是空的。

饮食模型

代码语言:javascript
复制
class Diet extends Model
{
    public $table = "diet_settings";
    public $timestamps = false;

    public function eatingType(){
        return $this->hasMany(EatingType::class);
    }
}

EatingType模型

代码语言:javascript
复制
class EatingType extends Model
{
    public $timestamps = false;
    public $table = "eating_types";

    public function dietFood(){
        return $this->hasMany(DietFood::class, 'id','eating_type_id');
    }
    public function diet(){
        return $this->belongsTo(Diet::class);
    }
}

DietFood模型

代码语言:javascript
复制
class DietFood extends Model
{
    public $timestamps = false;
    public $table = "diet_food";

    public function eatingType(){
        return $this->belongsTo(EatingType::class);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-06 16:09:30

通过遵循关于枢轴:http://laraveldaily.com/pivot-tables-and-many-to-many-relationships/的指南解决问题

此外,当您输出数据时,应该这样做:

代码语言:javascript
复制
$diets = Diet::with('eating')->get();
foreach($diets as $diet){
    var_dump($diet->eating->toArray());
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39280558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档