2016-12-11 27 views
0

私はLaravelでbelongsToMany()を使用しますが、スタッフは複数のポジションを持つことができます。最も大きい日付とdesc idのスタッフを持っていきたいと思います。あなたのPerson.phpLaravel belongsToMany()date desc

PHP code/MySQL result

+0

ここには何も間違っています。なぜあなたのモデルに複数の名前を付けましたか? Laravelは特異なキーワードの使用を推奨しています。次に、whereRawとwhereHas関係関数でクエリを使用する理由は何ですか?関係関数は関係と一緒に書かれた 'where'クエリを持つべきではありません...最後に、正確に何が必要ですか?どのようにして10番目の写真の日付が最も大きいのですか?それはIdの中で最大のものなのでしょうか? – prateekkathal

+0

- 私は間違って、すでにPosition.phpを書きました。 - 私が望むのは、 "action_date"の日付に基づいてスタッフが現在作業しているポジションを見つけることです。だから私は関係で尋問をしました。 - 最初の画像で、日付が同じ場合は、最後に追加したデータ、つまり最大のIDを使用します。 –

答えて

0

public function positions() 
{ 
    return $this->belongsToMany('Path\To\Person')->withPivot(['id', 'person_id', 'position_id', 'created_at', 'updated_at']); 
} 

Position.phpに戻って関係を追加する今、あなたは

....のような
$positions = Person::positions() 
        ->wherePivot('action_date', '>=', $date) 
        ->orderBy('person_position.id', 'desc') 
        ->get(); 

$pivotTable = $positions->map(function($position) { 
       return $position->pivot; 
       }); 
何かを行うことができます

他の問題に直面したら教えてください:)

+0

ありがとうございます。このコードはスタッフ専用ですので、 "mysql query"で動作するコードが必要です。サンプルコード。 "Position :: find(1)-persons() - > whereBranch(1) - > count();"この質問を提供できるコードはありますか? –

+0

@DavutKember上記のコメントで、** "私が望むのは、スタッフが現在取り組んでいるポジションを見つけることです。" **上記コード(あなたがちょうどコメントした)によってどのようにポジションを見つけるのですか? 'Position :: find(1)'を実行することによって...あなたはすでにスタッフが作業しているポジションを知っています。どうぞよろしくお願いします。 – prateekkathal

+0

私が望むポジションで働くスタッフ全員を探したい。 イメージデータベースを再度参照してください。同じ人物には3つのポジションがあります。最高の日付のポジションを有効にしたい。 したがって、画像の最後のデータベースによれば、Position :: find(2) - > persons() - > count()クエリは0になり、Position :: find(9) - > persons ) - > count()クエリが1に到達するように " "悪い英語をお詫びし、Google翻訳で翻訳します。 –

関連する問題