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

केकेपीएचपी 3 - एसोसिएशन के साथ डेटा सहेजना जहां एसोसिएशन पर निर्भर है

ऐसा लगता है कि उपयोगकर्ता तालिका में एक बूलियन फ़ील्ड होना अधिक समझ में आता है जो परिभाषित करता है कि उपयोगकर्ता एक व्यवस्थापक है या नहीं।

ऐसा कहा जा रहा है, यदि आपको पहले से नहीं है तो आपको अपने मॉडलों में रिश्ते को परिभाषित करने की आवश्यकता हो सकती है। तकनीकी रूप से, आपके टेबल नामों और कॉलम (user_id) के आधार पर केक को आपके लिए इसे सेंकना चाहिए, लेकिन मुझे याद नहीं है कि बहुवचन मॉडल नाम (उपयोगकर्ता, व्यवस्थापक) होना पारंपरिक है, इसलिए ऐसा नहीं हो सकता है।

उपयोगकर्ता:

public $belongsTo = [
    'Admins' => [
        'classname' => 'Admins', //are your models really plural? 
        'foreignKey' => 'user_id',
];

व्यवस्थापक

public $hasOne= [
    'Users' => [
        'classname' => 'Users',
        'foreignKey' => 'user_id',
];

फिर, मुझे लगता है कि आपको व्यवस्थापक के बारे में कुछ जानकारी निर्दिष्ट करने की आवश्यकता होगी, या आपके पास संबद्धता को सहेजने के लिए कोई डेटा नहीं होगा। दृश्य में:

echo $this->Form->input('admins.field1');
echo $this->Form->input('admins.field2');
echo $this->Form->input('admins.field3');

ध्यान दें कि यदि आप कुछ भी इनपुट नहीं करना चाहते हैं तो इन क्षेत्रों को छुपाया जा सकता है।

सहेजने के लिए, अनुरोध डेटा से एक नया उपयोगकर्ता बनाएं (आपका प्रपत्र एक उपयोगकर्ता बनाता है, लेकिन आप प्रपत्र के साथ एक व्यवस्थापक बना सकते हैं, और फिर उपयोगकर्ता.नाम और उपयोगकर्ता.उपनाम जैसे इनपुट जोड़ सकते हैं)। नियंत्रक:

$user = $this->Admins->Users->newEntity();

if($this->request->is('post')) {
    $this->Admins->Users->patchEntity($user, $this->request->data, [
        'associated' => ['Admins']
    ]);
    $this->Admins->Users->save($user);
}


  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. प्रॉक्सीएसक्यूएल-व्यवस्थापक विकल्प - क्लस्टरकंट्रोल प्रॉक्सीएसक्यूएल जीयूआई

  3. पॉवरशेल में MySQL टाइमआउट

  4. mysql_query() परिणाम के माध्यम से पुनरावृति कैसे करें?

  5. जॉइन बनाम जबकि बयान