2016-04-21 131 views
2

我laravel应用structed这样的:Laravel复杂关系

  • 人:型号&控制器
  • 宠物:型号&控制器。有多对多的关系人
  • Abiilities:型号&控制器。
  • People_pets:人的宠物。 (数据透视表,people_idpet_id)。还有4列abbility1_id,abbility2_id,abbility3_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的枢轴信息能力ID。

问题 我想要做的是一个JSON对象添加到名为“abbilities”这种方法的结果,并获得abbilities的数据有,如名称,并从Abbilities模型/控制器描述。

我如何才能将ID的信息添加到我的查询中?

当前API调用的输出:

Current output

所需的输出:与attack_id的的细节每一个宠物的对象内Abbilities的阵列内$user->pets->pivot->attack1_id

回答

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(); 
+0

我不知道如何访问过,因为我得到它只是如上图所示的方法的结果,在我的问题\: – TheUnreal

+0

那么,如果它拉到通过多对多的关系,你应该可以从'$ pet'访问它。你有什么尝试? – DuckPuncher

+0

嘿@DuckPuncher,检查我的问题更新,我添加了我的API调用结果和所需的输出,使其更加清晰地理解我想要实现的目标。 – TheUnreal