Laravel子关系

问题描述 投票:0回答:2

我有以下型号:

class Recipe extends Model
{

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

class Ingredient extends Model
{
    protected $fillable = [
            'name','image'
        ];
}

class RecipePart extends Model
{
    public $timestamps = false;

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

在我的控制器中,我想要返回一个食谱,其中所有食谱部分属于他,并且所有成分都属于每个食谱部分。以下代码有效,但......:

return Recipe::with('parts.ingredients')
            ->where('id',$request->id)->first();

它工作,我的parts.ingredients返回我的recipe_part_ingredients表中的数据,这是好的,但我想要每个ingredient_id - 从我的ingredients表返回成分信息。 (姓名,图片)

知道我怎么能这样做吗?我尝试将以下代码添加到RecipePartIngredient中,但没有运气:

public function ingredient() {
        return $this->hasOne('App\Ingredient');
    }
laravel laravel-5 eloquent
2个回答
0
投票

你必须使用

像那样的belongsTo方法:

public function ingredient() {
    return $this->belongsTo('App\Ingredient');
}

0
投票

这个怎么样:

return Recipe::with('parts.ingredients')
    ->with('parts.ingredients.ingredient')
    ->find($request->id);
© www.soinside.com 2019 - 2024. All rights reserved.