Laravel-BelongsToMany仅检索当前相关记录

时间:2020-02-26 08:59:02

标签: laravel

我有两个模型,RicettaIngrediente,并且这种关系:

Ingrediente.php

public function ricetta()
    {
        return $this->belongsToMany('\App\Models\Ricetta', 'ricetta_has_ingrediente', 'ingrediente_id', 'ricetta_id')->withPivot('qta', 'unita_misura_id');
    }

Ricetta.php

public function ingrediente()
    {
        return $this->belongsToMany('\App\Models\Ingrediente', 'ricetta_has_ingrediente', 'ricetta_id', 'ingrediente_id')->withPivot('qta', 'unita_misura_id');
    }

因此,通过此查询,我可以检索Ingrediente中的所有Ricetta

$result = $model->newQuery()
    ->select('ingrediente.*')
    ->with('ricetta')
    ->whereHas('ricetta', function($query){
        $query->where('ricetta_has_ingrediente.ricetta_id', 1);
      })->get();

它可以工作,但是在$result->ricetta中,我拥有所有RicettaIngredinte,不仅是当前的Ricetta(id = 1)。

如何修改查询以仅检索当前的Ricetta?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在加载约束时将约束传递给每个关系:

{
  "extends": "../src/tsconfig.app.json",
  "compilerOptions": {
    "types": [
      "node"
    ]
  },
  "exclude": [
    "../src/test.ts",
    "../src/**/*.spec.ts",
    "../projects/**/*.spec.ts",
    "../src/assets/webgl_2019_1/**/*"
  ],
  "include": [
    "../src/**/*",
    "../projects/**/*"
  ],
  "files": [
    "./typings.d.ts"
  ]
}