1

メソッドを呼び出して、findAll4 つのフィールドを取得しています$owned。つまり、テーブルからレコードを取得した後、結果のデータレコードには所有フィールドが含まれている必要があります。また、$ownedフィールドは、ユーザーがグループの所有者であるかどうかに基づいて動的です。使ってみafterFindました。しかし、それも機能していません。驚くべきことに、属性では$ownedなくオブジェクトに属性を追加しています。CJSON::encode($model)出力を表示するためにコントローラーで使用して$ownedいます。フィールドが表示されていません。以下はコードです

/**
*
* The followings are the available columns in table 'group':
* @property integer $id
* @property string $name
* @property string $created_at
* @property string $updated_at
*/

class Group extends CActiveRecord
{
//adding owned property for groups.true if user is owner

    public $owned;

protected function afterFind()
{

    parent::afterFind();
    //if user is owner of group its true
    $this->owned = true;

}
4

2 に答える 2

0

次のコードを試してください:

public function init()
    {
        $this->onAfterFind=array($this,'afterFindCustom');
        parent::init();
    }

    public function afterFindCustom()
    {
        $this->owned = true;
        parent::afterFind();
    }
于 2012-12-17T16:59:09.093 に答える
0

最後に私は知った。CJSON::encode の問題です。このメソッドは、モデルのプロパティのみをエンコードします。リレーショナル プロパティまたは動的プロパティはエンコードされません。だから私は自分の関数を書いて、それは動作します.!

これが将来誰かに役立つことを願っています

すべてのスミスに感謝します

于 2012-12-20T07:43:37.610 に答える