2016-04-25 11 views
1
  • の情報を追加する私は、それらの間の関係はbelongsToManyあるpetsテーブル
  • を有します。
  • これらのテーブルには、ユーザの特定のペットに関する情報を持つピボットテーブルuser_petsがあります。
  • $user->pets()を使用してピボットテーブル情報を含め、ユーザーのペットを入手しました。私のユーザーモデルでpets()方法は次のとおりです。Laravel - 私は<code>users</code>テーブル</li> <li>を有する関係出力に

    public function pets() 
    { 
        $pets = $this->belongsToMany(Pet::Class, 'user_pets')->withPivot(
        'id', 
        'position', 
        'level', 
        'exp' 
        )->orderBy('position','asc'); 
        return $pets; 
    } 
    
  • あなたはlevelexpフィールドとして、すべてのペットを見ることができるように。次のレベルを取得するために必要なEXPが私のpet_exp表に記載されている:

    ID | level | requiredExp 1 5 237 2 6 406 3 7 637 4 8 942 5 9 1326 6 10 1800 7 11 2369

  • 問題:は、私は$user->pets()(上記の方法)を使用して、ペットの現在のレベルのrequiredExpを返すようにしたいです。私は数時間考えていて、それをどうやって行うのか考えられませんでした。

お手数ですが、ありがとうございます!ここで

+0

ペットのレベルが「5」の場合は「237」、ペットのレベルよりも1レベル高いので「406」を返すようにしますか? – Samsquanch

+0

私は237を返すように求めています。 – TheUnreal

+0

「ペット」モデルにプロパティを追加することは容認できますか?あるいは、返された 'pets()'配列の中に入れなければなりませんか?私がこれをしていたなら、 'requiredexp()'関数を 'Pets'モデルに追加して' $ this-> level'に必要なexpを返すでしょう。 – Samsquanch

答えて

1

は、私はそれを行うだろう方法は次のとおりです。

あなたPetモデルでrequiredexp機能を追加します。

function requiredexp() { 
    return DB::table('pet_exp')->where('level', $this->level)->value('requiredExp'); 
} 

これは、あなたが(つまり、上の関数を呼び出したペットのレベルのためにrequiredExpを返す必要があります$pet->requiredexp

EDIT:

ます。また、属性としてそれを行うことができます:

function getRequiredexpAttribute($value) { 
    return DB::table('pet_exp')->where('level', $this->level)->value('requiredExp'); 
} 
+0

私が直面している主な問題は、 '$ user-> pets()'を使ってすべてのペットにとってデフォルトにすることです。これは、ユーザーのペットを検索する際に、すべてのペットがこの値を自動的に計算することを意味します。私は関係出力にこの値を持つ必要があります。 – TheUnreal

+0

私はあなたが求めていることを理解しているとは完全には分かっていませんが、あなたが属性を求めて何をしたいと思うかはわかります。私はそれを私の答えに編集します。 – Samsquanch

+0

私が私のqusetionに投稿したメソッド 'pets()'は、各ペットに必要なペットのペットを出力するということです。私は運がない 'foreach'を使用しようとしていました。 – TheUnreal

関連する問題

 関連する問題