Laravel关系复杂

时间:2016-04-21 14:18:50

标签: laravel

我的laravel app就像这样:

  • 人物:模特&控制器
  • 宠物:型号&控制器。与多对多的关系。
  • Abiilities:Model&控制器。
  • People_pets:人们的宠物。 (带有people_idpet_id的数据透视表)。还有4列abbility1_idabbility2_idabbility3_idabbility4_id

现在..我构建了一个API方法来返回用户宠物,它看起来像这样:

public function pets()
    {
        return $this->belongsToMany(Pet::Class, 'user_pets')->withPivot(
        'abbility1_id',
        'abbility2_id',
        'abbility3_id',
        'abbility4_id'
        )->orderBy('position','asc');
    }

使$user->pets返回宠物的用户列表,其中包含user_pets的枢轴信息和abbility id。

问题 我想要做的是将json对象添加到此方法结果名为" abbilities"并从 Abbilities 模型/控制器中获取名称和描述等可能性的数据。

如何从ID中添加我的查询中的abbilities信息?

当前API CALL的输出:

Current output

所需输出:每个宠物对象内的Abbilities数组,其中包含$user->pets->pivot->attack1_id

内的attack_id的详细信息

1 个答案:

答案 0 :(得分:0)

您可以使用查询构建器和orWhere来获取数据。我不认为你可以通过与你设置方式的关系来访问它。

我不知道你如何访问你的宠物能力ID,但我猜它就像$pet->abbility1_id

$abbilities = Abbilities::where('id', '=', $pet->abbility1_id)
    ->orWhere('id', '=', $pet->abbility2_id)
    ->orWhere('id', '=', $pet->abbility3_id)
    ->orWhere('id', '=', $pet->abbility4_id)
    ->get();