Laravel子关系

时间:2019-02-17 12:39:12

标签: laravel laravel-5 eloquent

我有以下型号:

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');
    }

2 个答案:

答案 0 :(得分:0)

您必须使用

belongsTo这样的方法:

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

答案 1 :(得分:0)

如何?

return Recipe::with('parts.ingredients')
    ->with('parts.ingredients.ingredient')
    ->find($request->id);