Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Laravel वाक्पटु संबंधों का उपयोग कर त्रिगुट संबंध बनाना

मूल रूप से आपकी चार टेबल कुछ इस तरह होंगी:

कर्मचारी

  • आईडी
  • ...आपके क्षेत्र

प्रोजेक्ट

  • आईडी
  • ...आपके क्षेत्र

रोजगार

  • आईडी
  • ...आपके क्षेत्र

कर्मचारी_परियोजना

  • कर्मचारी_आईडी
  • project_id
  • रोजगार_आईडी

आप समस्या को 2 से 2 संबंधों में विभाजित कर सकते हैं:

class Employee extends Model{
  public function projects(){
    return $this->belongsToMany("Project")
  }

  // Second relation is Optional in this case
  public function employments(){
    return $this->belongsToMany("Employment", 'employee_project')
  }
}

एक प्रोजेक्ट मॉडल

class Project extends Model{
  public function employees(){
    return $this->belongsToMany("Employee")
  }

  // Second relation is Optional in this case
  public function employments(){
    return $this->belongsToMany("Employment",'employee_project')
  }
}

एक रोजगार मॉडल

class Employment extends Model{
  public function employees(){
    return $this->belongsToMany("Employee")
  }

  public function projects(){
    return $this->belongsToMany("Project")
  }
}

इस बिंदु पर आप अपने नियंत्रक में अपने संबंध का प्रबंधन कर सकते हैं, उदाहरण के लिए यदि आप $ कर्मचारी को जोड़ना चाहते हैं, तो आईडी 2 के साथ रोजगार के साथ आईडी 1 वाला प्रोजेक्ट आप आसानी से कर सकते हैं

$employee->projects()->attach([1 => ['employment_id' => '2']]);

मुझे आशा है कि यह आपके प्रश्न का उत्तर देगा।

अगर आपको अपनी पिवट टेबल में टाइमस्टैम्प चाहिए, तो अपने रिश्तों में ->withTimesetamps() जोड़ें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या MySQL डेटाबेस डिज़ाइन में लाखों टेबल और लाखों पंक्तियाँ एक सामान्य प्रथा है?

  2. MYSQL स्क्रिप्ट से आउटपुट में भिन्न है

  3. MySQL प्रतिकृति के लिए विफलता का परिचय - 101 ब्लॉग

  4. एसक्यूएल सर्वर - एसक्यूएल इंजेक्शन हमले से बचने के लिए गतिशील एसक्यूएल को संभालने की एक चाल?

  5. 2 कार्य जो MySQL में एक तिथि से महीने का नाम लौटाते हैं