Foreach Mit 1 Datensatz


(Beat Sun) #1

Hallo Zusammen

Ich habe eine Newsletter Routine welche mittels foreach durch alle Datensätze läuft. Die funktioniert auch prima.

Nun möchte ich nach der Registration dem einzelnen Benutzer gleich einen Newsletter zustellen und da bekomme ich den Fehler.


Trying to get property of non-object    

Kann es sein das die foreach schleife wie ich sie aufgebaut habe nicht mit 1 Record umgehen kann?


function CreateNewsletter($id = NULL) {


 $result = 0;

 $result1 = 0;

 $resultplz  = 0;

 $htmlOutput = "";

 

 $this->template = 0;

 

 // Klasse einbinden

  require_once(dirname(__FILE__).'/Newsletter.php');

  

  // Benutzer

  $this->modelBenutzer = new User;

  // Initialversand nach aktivierung

 


 if ($id > 0) {

  $this->id = $id;

  echo $this->id;

  $this->modelBenutzer = User::Model()->FindByPk($this->id);       <----- funktioniert nicht 

  } else {

  $this->modelBenutzer = User::Model()->FindAll();          <------ funktioniert

  }

  

  // Angebote

  $this->modelAngebot = New Angebote;

  $this->modelAngebot = Angebote::Model()->Findall();

  

  // template setzen

  $this->SetTemplate(1);

 

 

 // Benutzer

 foreach($this->modelBenutzer as $i=>$Benutzer) {

 

 

 $htmlOutput = $htmlOutput . '<br><h4>Benutzer ' . $Benutzer->username . '</h4>';   <------ Fehler!!!!!

 $this->AngebotCount = 1;

 

  // Angebote

  foreach($this->modelAngebot as $i1=>$Angebot) {

  $this->Count = 0;


...


......

  

Vielen Dank für die Hilfe

Gruss Beat


(Marko Bischof) #2

findAll() gibt ein Array zurück, findByPk() nicht


(Beat Sun) #3

Na das erklärt alles :)

Mach ich mich mal schlau wie ich das am besten machen kann.

Vielen Dank.


(Marko Bischof) #4

$this->modelBenutzer[] = User::Model()->FindByPk($this->id);


(Beat Sun) #5

Hmm … Dann kommt… :(


Eigenschaft "User. ist nicht definiert.    

Diese Fehlermeldung kenn ich noch nicht

ActiveRecord.php


/**

  * PHP setter magic method.

  * This method is overridden so that AR attributes can be accessed like properties.

  * @param string $name property name

  * @param mixed $value property value

  */

 public function __set($name,$value)

 {

  if($this->setAttribute($name,$value)===false)

  {

   if(isset($this->getMetaData()->relations[$name]))

    $this->_related[$name]=$value;

   else

    parent::__set($name,$value);  <--- Fehler

  }

 }

Ich gebe mir jetzt das Array mit findAllBySql


$this->modelBenutzer = User::Model()->findAllBySql('select * from user where id = ' . $this->id);

Danke