テーブルに主キーが 2 つあるレコードがあるかどうかを確認する必要がありました。
$ssd=Ssd::model()->find(array(
'condition' => "id_scaglione=:sca AND COD_FIS LIKE :cf",
'params' => array(
':sca' => $sca_attivo->attributes['ID_SCAGLIONE'],
':cf' => $codfisc
)
));
しかし、「foreach() に無効な引数が指定されました」というエラーが表示されます。
モデルで宣言された関係の問題だと思います...
主キーの検索で同じエラーが発生しました
$ssd = Scaglioni::model()->findByPk($sca_attivo->attributes['ID_SCAGLIONE'], $codfisc);
Ssd モデルのオーバーライドされたメソッドを使用:
public function primaryKey(){
return array('ID_SCAGLIONE', 'COD_FIS');
}
モデルの関係は次のとおりです。
スカリオーニ
class Scaglioni extends CActiveRecord{
public function relations()
{
return array(
'ssd' => array(self::HAS_MANY, 'Ssd', 'ID_SCAGLIONE'),
);
}
}
スチューデンティ
class Studenti extends CActiveRecord{
public function relations()
{
return array(
'ssd' => array(self::HAS_MANY, 'Ssd', 'COD_FIS'),
'scaglioni' => array(self::HAS_MANY, 'Scaglioni', array('ID_SCAGLIONE'=>'ID_SCAGLIONE'), 'through'=>'ssd'),
);
}
}
SSD
class Ssd extends CActiveRecord{
public function relations()
{
return array(
'scaglioni' => array(self::BELONGS_TO, 'Scaglioni', 'ID_SCAGLIONE'),
'studenti' => array(self::BELONGS_TO, 'Studenti', 'COD_FIS'),
);
}
}