<?php
/**
* This is the model class for table "status".
*
* The followings are the available columns in table 'status':
* @property integer $status_id
* @property string $message
* @property string $created
* @property integer $thumbs_up
* @property integer $thumbs_down
* @property string $reply
* @property integer $user_id
*
* The followings are the available model relations:
* @property Comment[] $comments
* @property User $user
* @property ThumbUpDown[] $thumbUpDowns
*/
class Status extends CActiveRecord {
/**
* Returns the static model of the specified AR class.
* @param string $className active record class name.
* @return Status the static model class
*/
public static function model($className = __CLASS__) {
return parent::model($className);
}
/**
* @return string the associated database table name
*/
public function tableName() {
return 'status';
}
/**
* @return array validation rules for model attributes.
*/
public function rules() {
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('message, created', 'required'),
array('thumbs_up, thumbs_down, user_id', 'numerical', 'integerOnly' => true),
array('message', 'length', 'max' => 255),
array('reply', 'length', 'max' => 45),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('status_id, message, created, thumbs_up, thumbs_down, reply, user_id', 'safe', 'on' => 'search'),
);
}
/**
* @return array relational rules.
*/
public function relations() {
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'comments' => array(self::HAS_MANY, 'Comment', 'status_id'),
'user' => array(self::BELONGS_TO, 'Register', 'user_id'),
'thumbUpDowns' => array(self::HAS_MANY, 'Thumb_up_down', 'status_id'),
);
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels() {
return array(
'status_id' => 'Status',
'message' => 'Message',
'created' => 'Created',
'thumbs_up' => 'Thumbs Up',
'thumbs_down' => 'Thumbs Down',
'reply' => 'Reply',
'user_id' => 'User',
);
}
/**
* Retrieves a list of models based on the current search/filter conditions.
* @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
*/
public function search() {
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria = new CDbCriteria;
$criteria->compare('status_id', $this->status_id);
$criteria->compare('message', $this->message, true);
$criteria->compare('created', $this->created, true);
$criteria->compare('thumbs_up', $this->thumbs_up);
$criteria->compare('thumbs_down', $this->thumbs_down);
$criteria->compare('reply', $this->reply, true);
$criteria->compare('user_id', $this->user_id);
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
));
}
public function getUrl() {
return Yii::app()->createUrl('status', array(
'id' => $this->status_id,
'title' => $this->message,
));
}
public function addComment($comment) {
$comment->status_id = $this->status_id;
$comment->user_id = Yii::app()->user->id;
$comment->created = date('Y-m-d H:i:s');
return $comment->save();
}
}
注册模型
<?php
/**
* This is the model class for table "user".
*
* The followings are the available columns in table 'user':
* @property integer $user_id
* @property string $username
* @property string $password
* @property string $name_first
* @property string $name_last
* @property string $email
* @property string $picture
* @property integer $active
* @property string $created
*/
class Register extends CActiveRecord {
/**
* Returns the static model of the specified AR class.
* @param string $className active record class name.
* @return Register the static model class
*/
public static function model($className = __CLASS__) {
return parent::model($className);
}
/**
* @return string the associated database table name
*/
public function tableName() {
return 'user';
}
/**
* @return array validation rules for model attributes.
*/
public function rules() {
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
//array('username, password, name_first, name_last, email, active, created', 'required'),
array('username, password, name_first, name_last, email', 'required'),
array('active', 'numerical', 'integerOnly' => true),
array('username, password, name_first, name_last', 'length', 'max' => 45),
array('email', 'length', 'max' => 100),
array('picture', 'length', 'max' => 255),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('user_id, username, name_first, name_last, email, active', 'safe', 'on' => 'search'),
);
}
/**
* @return array relational rules.
*/
public function relations() {
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'friends' => array(self::HAS_MANY, 'Friend', 'user_id'),
'friendLists' => array(self::HAS_MANY, 'FriendList', 'user_id'),
'notifications' => array(self::HAS_MANY, 'Notification', 'user_id'),
'profiles' => array(self::HAS_MANY, 'Profile', 'user_id'),
'statuses' => array(self::HAS_MANY, 'Status', 'user_id'),
);
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels() {
return array(
'user_id' => 'User',
'username' => 'Username',
'password' => 'Password',
'name_first' => 'Name First',
'name_last' => 'Name Last',
'email' => 'Email',
'picture' => 'Picture',
'active' => 'Active',
'created' => 'Created',
);
}
/**
* Retrieves a list of models based on the current search/filter conditions.
* @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
*/
public function search() {
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria = new CDbCriteria;
$criteria->compare('user_id', $this->user_id);
$criteria->compare('username', $this->username, true);
//$criteria->compare('password', $this->password, true);
$criteria->compare('name_first', $this->name_first, true);
$criteria->compare('name_last', $this->name_last, true);
$criteria->compare('email', $this->email, true);
//$criteria->compare('picture', $this->picture, true);
$criteria->compare('active', $this->active);
//$criteria->compare('created', $this->created, true);
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
));
}
// encrypt password
public function beforeSave() {
$this->created = date('Y-m-d H:i:s');
$this->password = md5($this->password);
$this->active = 1;
$this->picture = '';
return true;
}
}
我想通过echo $ data-&gt; user-&gt; username获取Status的用户名 但我在$ data-&gt; user-&gt;用户名时遇到错误试图获取非对象的属性 我需要你的帮助。 感谢提前!
答案 0 :(得分:4)
看起来用户是一个数组。试试$data->user['username']
答案 1 :(得分:0)
使用'with'这样的标准属性:
$criteria->with = array('user').
它比懒惰负载更好。检查此http://www.yiiframework.com/doc/guide/1.1/en/database.arr#relational-query-performance。 如果您可以使用$ data-&gt; user-&gt; username来提供更多代码会更好,我认为它是gridview?
答案 2 :(得分:0)
此错误(试图获取非对象的属性)意味着“user”表中没有id字段值等于$ data-&gt; user_id的记录。
检查$ data-&gt; user_id的值,并确保它存在于“user”表的id字段中。
答案 3 :(得分:0)
尝试将您的Status
模型关系字符串更改为:
'user' => array(self::BELONGS_TO, 'Register', array('user_id' => 'user_id)),
希望它会有所帮助。
答案 4 :(得分:0)
您应该能够使用print_r($data)
来查看变量的内部结构。那么你将对如何使用变量有意见。
答案 5 :(得分:0)
希望这可以帮到你
$data["user"]["username"]