Yii Framework Forum: Updatebypk() Löscht Nicht Übergebene Felder - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Updatebypk() Löscht Nicht Übergebene Felder Rate Topic: -----

#1 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 02 November 2012 - 10:09 AM

Hi,

im User-Backend habe ich 5 Felder zur Verfügung gestellt die geupdatet werden können.

Der Controller sieht wie folgt aus:

if(isset($_POST['Users']))
{
	$oUser = new Users;
	$oUser->id = $_POST['tID'];
	$oUser->setAttributes($_POST['Users']);

	$oUser->updateByPk($oUser->id,$oUser->getAttributes());
			
	$this->redirect(array('admin/userupdate', 'id' => $oUser->id));
}


Übergeben werden im POST folgende Felder:

[username] => ding
[prename] => Vornic
[surname] => Nachnai
[email] => mail@solalala.com
[city] => Cologne
[country_id] => 6


Yii updatet jedoch auch das Passwort in der DB, obwohl dies nicht im POST enthalten ist.

So wie es aussieht werden die übergebenen Felder geupdatet und alle anderen geleert.

Wie kann ich Yii sagen, dass er nur die übergebenen Felder updaten soll?

thx!
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#2 User is offline   Mekroth 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 15-December 09

Posted 02 November 2012 - 11:32 AM

Hallo yii,

kenn mich mit Yii auch nicht so gut aus, habe erst wieder vor kurzem angefangen micht damit zu beschäftigen, aber vielleicht geht es so:

$oUser->updateByPk($oUser->id,$_POST['Users']);



Gruß...
0

#3 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 02 November 2012 - 01:13 PM

Hi Mekroth,

danke das klappt.
Verstehen tue ich es aber nicht...
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#4 User is offline   Ben 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 269
  • Joined: 15-March 09

Posted 02 November 2012 - 03:28 PM

Liegt an der getAttributes()-Methode. Die gibt laut Doku auch nicht aus der DB geladene Felder zurück. In deinem Fall also alle Properties der User-Klasse. Die die aus dem $_POST-Array zugewiesen werden konnten sind befüllt, alle anderen NULL.

Um das Verhanlten zu ändern, probier's mal mit

$oUser->updateByPk( $oUser->id, $oUser->getAttributes(null) );


Und vergiss nicht dein Model zu validieren bevor du speicherst. ;)
Don't like ads in my sig...
0

#5 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,013
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 05 November 2012 - 04:04 AM

Dumme Frage: Warum machst du das überhaupt mit updateByPk() und nimmst nicht den Standardweg über save()?
0

#6 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 05 November 2012 - 03:35 PM

Mit save hat er mir ständig einen neuen Eintrag angelegt.
Dann habe ich ein hiddenField erzeugt mit "ID" und dort den Wert angelegt, jedoch wurde dieser dann nicht mit übertragen.
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#7 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,013
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 06 November 2012 - 03:16 AM

Dann hast du prinzipiell schon was falsch gemacht. Du hast vermutlich einfach ein neues Record angelegt und dann versucht das mit der selben ID zu speichern. Richtig wäre, erst das alte Objekt anhand der ID zu laden, dann die POST-Daten zuzuweisen und zu speichern.
2

#8 User is offline   spatan 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 05-December 11

Posted 11 December 2012 - 04:46 PM

Why did you tell him stupid question. Thats rude. The fact that you know better doesn't me you should be rude.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users