2016-12-25 3 views
6

के माध्यम से कनेक्शन हैं I Lar Lar 5.3 का उपयोग कर रहा हूं। मेरे पास 4 टेबल हैं डिफ़ॉल्ट Users तालिका। Departments, Position, Employees टेबल।लार्वेल 5.3 क्वेरी 4 टेबल से परिणाम प्राप्त करने के लिए है जिसमें विदेशी कुंजी

Users टेबल है ID | Email | Password

Departments टेबल है ID | Department | User_Id - यहाँ User_Id विदेशी कुंजी Users तालिका के ID

Positions मेज से आता है ID | Position | Department_Id है - यहाँ Department_Id विदेशी कुंजी से Departments तालिका के ID

आता है Employees तालिका मेंहै 0 - यहां Position_Id विदेशी कुंजी Positions तालिका का ID

उपयोगकर्ता एकाधिक Departments हो सकता है। Departments कई Positions हो सकता है, Positions कई Employees हो सकता है। इसलिए, यदि उपयोगकर्ता अलग है, तो मैं उस उपयोगकर्ता द्वारा बनाए गए सभी 4 टेबलों से सभी डेटा कैसे प्राप्त कर सकता हूं?

उत्तर

3

आप nested eager loading उपयोग कर सकते हैं:

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

क्या आपका जवाब है और इस बीच का अंतर है - http://stackoverflow.com/a/:

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

एक और तरीका सरल प्रश्नों का निर्माण करना है 2 9 166530/3866364 मैंने इस तरह से कोशिश की, लेकिन संबंध ठीक से नहीं बना सकता है। –

+0

अंतर से आपका क्या मतलब है? यदि आपके संबंध काम नहीं करते हैं, तो कृपया एक और प्रश्न पोस्ट करें और अपने संबंध कोड और विदेशी कुंजी के सटीक नाम (केस संवेदनशील) जोड़ें। –

+0

भ्रम के लिए खेद है। मेरा मतलब है, आपके उत्तर में केवल प्रश्न है। लेकिन दूसरे प्रश्न के उत्तर में मैंने टिप्पणी के ऊपर साझा किया है, मॉडल का उपयोग किया है (उदाहरण के लिए इस्तेमाल किया गया OneToMany, ManyToOne आदि)। तो, urs जैसे क्वेरी का उपयोग करने या मॉडल संबंधों का उपयोग करने के क्या फायदे हैं? –

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