2016-12-25 44 views
6

üzerinden bağlantıları olan 4 tablodan sonuçları almak için Sorgulama Laravel 5.3 kullanıyorum. 4 masam var. Varsayılan Users tablo. Departments, Position, Employees tabloları.Laravel 5.3 Foreign Key

Users tablo vardır ID | Email | Password

Departments tablo vardır ID | Department | User_Id - İşte User_Id yabancı anahtar ID | Position | Department_Id etti Users tablonun ID

Positions tablodan geliyor ise - İşte Department_Id yabancı anahtar Departments tablo en ID

den geliyor ise Employees tablosununvar 0 - İşte Position_Id yabancı anahtar Departments birden sahip olabilir Positions tablonun ID

Kullanıcı geliyor olduğunu. Departments birden çok Positions olabilir, Positions birden çok Employees olabilir. Dolayısıyla, kullanıcı farklıysa, o kullanıcının oluşturduğu tüm 4 tablodaki tüm verileri nasıl alabilirim?

cevap

3

Sen nested eager loading kullanabilirsiniz:

$departments = Department::where('user_id', $id)->get(); 
$positions = Position::whereIn('department_id', $departments->pluck('id')); 
$employees = Employee::whereIn('position_id', $positions->pluck('id')); 
+0

Cevabınız ve bu arasındaki fark nedir - http://stackoverflow.com/a/:

$departments = Department::where('user_id', $id) ->with('positions', 'positions.employees') ->get(); 

başka yolu da basit sorguları inşa etmek 29166530/3866364 Bu şekilde denedim, ancak ilişkiyi düzgün bir şekilde oluşturamıyor. –

+0

Fark ile ne demek istiyorsun? İlişkileriniz işe yaramıyorsa, lütfen başka bir soru gönderin ve ilişki kodunuzu ve yabancı anahtarların tam isimlerini ekleyin (küçük harfe duyarlı). –

+0

Karışıklık için özür dilerim. Demek istediğim, cevabın sadece Sorgu var. Ancak, diğer Soruların cevabında, yukarıdaki yorumu paylaştım, Model'i kullandı (örneğin, OneToMany, ManyToOne vb.). Peki, urs veya Modal ilişkileri kullanarak sorguyu kullanmanın yararları nelerdir? –