2016-05-21 106 views
0

我有以下laravel方法:Laravel:返回特定關係數據

public function getTeam() 
    { 
     $userCharacters = UserCharacters::with('evolution') 
     ->where('user_id','=',$this->id); 

     return $userCharacters->get(); 
    } 

正如你可以看到:

  • 每個用戶都有文字,在UserCharacters模型描述。
  • 每個角色都有一個進化(我也將它與用戶角色本身鏈接)。

我需要的是返回變陣在進化level小於或等於用戶角色級別。

當前,它返回所有進化關係的級別。

我一直想在UserCharacters模式的關係evolution()添加此where條件,但不與Laravel With工作:

public function evolution() 
{ 
    return $this->hasMany(Evolution::class,"character_id")->where('level','<',$this->level); 
} 

希望有人能幫助我,謝謝!

+0

大概'$這個 - > level'並沒有被設定,當你調用'UserCharacters ::用( '進化')'。 'dd(UserCharacters :: with('evolution') - > toSql());'return? –

+0

返回'「select * from user_characters」' – TheUnreal

+0

我有點困惑..試試這個:'where('level','<','user_characters.level')' –

回答

0

嘗試查詢生成器。作爲「$這個 - > ID」必須返回用戶ID,您應該從用戶模型於召本):

public function getTeam() 
{ 
    return DB::table('user_characters') 
    ->join('evolutions','user_characters.id','=','evolutions.user_characters_id') 
    ->where('user_characters.user_id','=',$this->id) 
    ->where('evolutions.level','<','user_characters.level') 
    ->select('user_characters.*') 
    ->get(); 
}