0

テーブルに主キーが 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'),
        );
    }
}
4

1 に答える 1

0

Ssd::model()->find(...) の後で、「foreach() に無効な引数が指定されました」というエラーで失敗します。

特に:

/var/www/framework/db/schema/CDbCriteria.php(152)
 public function __construct($data=array())
{
foreach($data as $name=>$value)
$this->$name=$value;
}

スタック トレースは次のとおりです。

0 /var/www/framework/db/ar/CActiveRecord.php(316): CDbCriteria->__construct(null)

1 /var/www/framework/db/ar/CActiveRecord.php(1338): CActiveRecord->getDbCriteria(false)

2 /var/www/framework/db/ar/CActiveRecord.php(1281): CActiveRecord->applyScopes(CDbCriteria)

3 /var/www/framework/db/ar/CActiveRecord.php(1392): CActiveRecord->query(CDbCriteria)

4 /var/www/concorsi/protected/controllers/ConfermaController.php(405): CActiveRecord->find(array("condition" => "id_scaglione=:sca AND COD_FIS LIKE :cf", "params" => array( ":sca" => $sca_attivo->attributes['ID_SCAGLIONE'], ":cf" => $codfisc)))

于 2014-07-04T07:43:11.467 に答える