Hi,
wie checkt ihr beim Speichern ob ein Datensatz in einer Verknüpfungstabelle schon vorhanden ist?
Integrity constraint violation: 1062 Duplicate entry
Hi,
wie checkt ihr beim Speichern ob ein Datensatz in einer Verknüpfungstabelle schon vorhanden ist?
Integrity constraint violation: 1062 Duplicate entry
Schlechte, aber funktionierende Lösung im Controller:
$model->id = 5;
if(Model::model()->findByPk(5) !== false) {
$model->save();
} else {
echo 'Error: Entry already exists';
}
Oder. Noch besser, du setzt eine RULE im model:
public function accessRules() {
return array( array('id', 'unique', ...) )
Siehe CUniqueValidator
ich baue einen Importer der die Werte dann einfach überspringen soll
Wird hier dann eine Fehlermeldung geworfen? Würde doppelt Einträge einfach ignorieren und mit der Abarbeitung fortsetzen
Ja es wird eine Fehlermeldung geworfen. "Variabel ist schon vorhanden " wird dann ausgegeben. Aber der Eintrag wird dann nicht Ignoriert es wird dann einfach nicht gespeichert.
Aber das was er oben geschrieben hat ist die Falsche Methode
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('user, email', 'required'),
array('', 'unique'),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('user, email', 'safe', 'on'=>'search'),
);
}
Das wäre dann die richtige Methode
accessRules hat was mit denn Rechten für die Views zutun.