Really Confused Over Error $This->

I just received this error from some code I was testing

SiteController and its behaviors do not have a method or closure named "create_entity".

The call to $this->create_entity() occurs no less than 6 times in the code and runs fine up to the last segment.

I had my code blocked out and was testing it one step at a time.

Why would one reference to $this->create_entity() work and the next fail?




 --  THIS WORKS FINE....!!!

	$width = 160;

	$height = 600;

	$size_id = $width.'x'.$height ;

		

	//check for existance of this size

	$criteria = new CDbCriteria;

	$criteria->condition = 'website_id='.$site_id.' and size_id="'.$size_id.'"';

	$placement = Placement::model()->find($criteria);

	if (empty($placement)) {  // create placement

		$created = $created + 1;

		 $name = $site->site_url.' : ROS : '.$width.'x'.$height.' : '.$position ;

		 // Get AppNexus ID for Placement  

		 $appnexus_id = $this->createApPlacement($auth, $site->appnexus_id, $width, $height, $name);

		 $status = $this->createPlacement( $site->publisher_id, $site->id, $width, $height, $appnexus_id, $name, $product );

	} 

	$criteria = new CDbCriteria;

	$criteria->condition = 'website_id='.$site_id.' and tag_type="preroll" ';

	$placement = Tag::model()->find($criteria);

	if (empty($placement)) {  	

	$created = $created + 1;

	$entity = $this->create_entity($this->publisher_id, $url);

	$success = $this->createTag($entity, $site->site_url.' - Pre-Roll', $site->publisher_id, $site->id, null, 'preroll', 0);

	}


	

	$criteria = new CDbCriteria;

	$criteria->condition = 'website_id='.$site_id.' and tag_type="mobile" ';

	$placement = Tag::model()->find($criteria);

	if (empty($placement)) {  

	$created = $created + 1;

	$entity = $this->create_entity($this->publisher_id, $url);

	$success = $this->createTag($entity, $site->site_url.' - Mobile', $site->publisher_id, $site->id, null, 'mobile', 0);

	}


	$width = "0";	 

	$height = "0";

	$size_id = $width.'x'.$height ;

	$product = 6;

	$criteria = new CDbCriteria;

	$criteria->condition = 'website_id='.$site_id.' and product = 6 ';

	$placement = Placement::model()->find($criteria);

	if (empty($placement)) {  

		$created = $created + 1;

		$name = $site->site_url.' : Impact : Sizeless : '.$position ;


[b]// THIS FAILS !!  Same call !

		$app_id = $this->createApPlacement($auth, $site->app_id, $width, $height, $name);

		$status = $this->createPlacement( $site->publisher_id, $site->id, $width, $height, $app_id, $name, $product ) ;

		

		$entity = $this->create_entity($site->publisher_id, $site->site_url);

		$success = $this->createTag($entity, $site->site_url.' - Impact', $site->publisher_id, $site->id, $app_id, 'vslider_impact', 1);[/b]


	} // end create placement



This code is in my Model Approval.php — suddenly the $this-> refers to the controller ? Midway thru the logic?

Makes no sense!

Is the value of $status what you expect? Is createPlacement also in Approval.php?

Thanks Gilberg,

Yes all the functions are defined in the model Approval.php.

I found if I use self::createPlacement() it works fine!

Should these functions be defined as protected or private ?