2015-04-15 15 views
5

मैं कई संबंधों में कई लोगों को लैरावेल का उपयोग करता हूं।दो टेबलों का चयन करें Laravel 5

$groups = \App\Project::findOrFail(Auth::user() -> id)->groups()->where('adminid','=',Auth::user()->id)->get(); 

यह सिर्फ समूह वापस आ जाएगी ... इस तरह::

Design 
SEO 

लेकिन मैं मैं 2 टेबल projects और groups और पाइवट टेबल project_group

अब मैं कुछ इस तरह कर सकते हैं इस तरह वापस लौटने की आवश्यकता है:

Design(Project2,Project3) 
SEO(Porject1) 

इसलिए प्रत्येक लूप के लिए मुझे समूह और उस समूह से जुड़ी सभी परियोजनाएं प्राप्त करने की आवश्यकता है।

public function groups(){ 
    return $this ->belongsToMany('App\Group','project_group')->withPivot('admin_id'); 
    } 

उत्तर

1

आप अपने समूह मॉडल में रिश्ते की प्रतिलोम परिभाषित कर सकते हैं:

यहाँ परियोजना मॉड्यूलर में मेरी रिश्ता है।

public function projects(){ 
    return $this->belongsToMany('App\Project','project_group')->withPivot('admin_id'); 
} 

और फिर, इसे अपनी स्पष्ट क्वेरी में उपयोग करें।

$groups = Group::with('projects')->get(); 

आप अपने समूहों के माध्यम से लूप करने में सक्षम होंगे और प्रत्येक समूह में सभी परियोजनाएं प्राप्त करेंगी।

foreach($groups as $group) { 
    foreach($group->projects as $project){ 
    //your project 
    } 
} 

मैं वास्तव में Auth::user() -> id के उपयोग समझ में नहीं आता लेकिन आप केवल परियोजना जहां वर्तमान उपयोगकर्ता आप समारोह के साथ में एक शर्त का उपयोग कर सकते व्यवस्थापक है चाहते हैं।

$groups = Group::with(['projects' => function($query) { 
    $query->where('adminid', Auth::user()->id) 
}])->get(); 
+2

'एथ :: उपयोगकर्ता() -> आईडी' वर्तमान में लॉग-इन उपयोगकर्ता की 'आईडी' देता है। लैरवेल 5 में, एक मिडलवेयर है जो जांचता है कि कोई उपयोगकर्ता लॉग इन है या नहीं, और आप 'Auth :: उपयोगकर्ता() 'का उपयोग करके उस रिकॉर्ड (फ़ील्ड्स और रिलेशनशिप) तक पहुंच सकते हैं। –

संबंधित मुद्दे