Yii 属性が取得出来ないエラー

“index”アクションにてPHP Warningのエラーが発生した時の原因と解決のメモ

エラーの内容

PHP warning

Invalid argument supplied for foreach()

下記のコードでエラーが発生している模様

場所:httpdocs/protected/views/user/_view.php

// ここでエラーが発生
<b><?php echo CHtml::encode($data->userDetail->getAttributeLabel('photo_main')); ?>:</b>

場所:/yii/framework/db/ar/CActiveFinder.php(826)

{
		// determine the primary key value
		if(is_string($this->_pkAlias))	// single key
		{
				if(isset($row[$this->_pkAlias]))
						$pk=$row[$this->_pkAlias];
				else		// no matching related objects
						return null;
		}
		else // is_array, composite key
		{
				$pk=array();
				foreach($this->_pkAlias as $name=>$alias)
				{
						if(isset($row[$alias]))
								$pk[$name]=$row[$alias];
						else		// no matching related objects
								return null;
				}
				$pk=serialize($pk);
		}

		// retrieve or populate the record according to the primary key value
		if(isset($this->records[$pk]))
				$record=$this->records[$pk];
定義漏れかと思い『relations()』でuserDetailを定義していたかを確認したが特に問題はなかった
しかしviewでオブジェクトの中身を出力すると空っぽだっで属性どころかオブジェクト自体が取得出来ていない

別の機能とソースを見比べても全くわからずデータベースの定義を確認した所、原因が判明した

■原因

PRIMARYが存在しなかったためデータが取得出来なかった模様

■解決法

PRIMARYを追加する

Comments are closed.