ऐसा लगता है कि उपयोगकर्ता तालिका में एक बूलियन फ़ील्ड होना अधिक समझ में आता है जो परिभाषित करता है कि उपयोगकर्ता एक व्यवस्थापक है या नहीं।
ऐसा कहा जा रहा है, यदि आपको पहले से नहीं है तो आपको अपने मॉडलों में रिश्ते को परिभाषित करने की आवश्यकता हो सकती है। तकनीकी रूप से, आपके टेबल नामों और कॉलम (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);
}