Mysql
 sql >> Datenbank >  >> RDS >> Mysql

CakePHP 3 - Speichern von Daten mit Assoziationen, sofern von Assoziationen abhängig

Es hört sich so an, als ob es sinnvoller wäre, ein boolesches Feld in der Benutzertabelle zu haben, das definiert, ob ein Benutzer ein Administrator ist oder nicht.

Davon abgesehen müssen Sie möglicherweise die Beziehung in Ihren Modellen definieren, falls sie noch nicht vorhanden ist. Technisch gesehen sollte Cake dies basierend auf Ihren Tabellennamen und Spalten (user_id) für Sie backen, aber ich erinnere mich nicht, ob es üblich ist, mehrere Modellnamen (Benutzer, Administratoren) zu haben, also ist dies möglicherweise nicht passiert. P>

Benutzer:

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

Administrator

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

Dann müssen Sie meiner Meinung nach einige Informationen über den Administrator angeben, oder Sie haben keine Daten zum Speichern der Zuordnung. In der Ansicht:

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

Beachten Sie, dass diese Felder ausgeblendet werden können, wenn Sie nichts eingeben möchten.

Erstellen Sie zum Speichern einen neuen Benutzer aus den Anforderungsdaten (Ihr Formular erstellt einen Benutzer, aber Sie könnten mit dem Formular einen Administrator erstellen und dann Eingaben wie user.name und user.surname hinzufügen). Verantwortlicher:

$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);
}