Yii 如何在cgridview中显示任何模型中都不包含的列?
我无法在cgridview中显示未包含在模型的任何虚拟属性中的列 fnname函数在model1中,其中pid、mid、expirydate是属性Yii 如何在cgridview中显示任何模型中都不包含的列?,yii,cgridview,Yii,Cgridview,我无法在cgridview中显示未包含在模型的任何虚拟属性中的列 fnname函数在model1中,其中pid、mid、expirydate是属性 ( fsp.pid = ".$this->pid." AND fsp.mid=".$this->mid. )"; $this->pid在model1中是fk,它属于model2……$this->mid是model1的主键,cgridview不会显示此代码,因为$this->pid$this->mid的值为空,如果
( fsp.pid = ".$this->pid."
AND fsp.mid=".$this->mid.
)";
$this->pid在model1中是fk,它属于model2……$this->mid是model1的主键,cgridview不会显示此代码,因为$this->pid$this->mid的值为空,如果我删除start to end它,则显示其余值
public function fnname()
{
$uid=Yii::app()->SESSION['mid'];
$criteria=new CDbCriteria;
//start
$post_table = Model1::model()->tableName();
$post_count_sql = "(SELECT datediff(fsp.expirydate,CURDATE())as daysleft
from $post_table fsp
WHERE ( fsp.pid = ".$this->pid."
AND fsp.mid=".$this->mid.
)";
$criteria->select = array(
'*',
$post_count_sql . " as daysleft",
);
$criteria->compare('$post_count_sql', $this->daysleft);
//end
$criteria->condition='userid='.$userid;
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination' => array('pageSize' => 2),
));
}
错误发生了
SELECT datediff(fsp.expirydate,CURDATE())as daysleft
from tbl fsp
WHERE ( fsp.pid =
AND fsp.mid=
)
此处fsp.pid和fsp.mid为空
如果删除//开始//结束行,将显示gridview
如果我有这个问题的话
(SELECT datediff( fsp.expirydate, CURDATE( ) ) AS daysleft
FROM tbl1 fsp
)
Cardinality violation: 1242 Subquery returns more than 1 row. The SQL statement executed was: SELECT *, (SELECT datediff( fsp.expirydate, CURDATE( ) ) AS daysleft
FROM tbl1 fsp
) as daysleft FROM `tbl1` `t` WHERE uid=3
请让我知道我做错了什么
输出必须与tihs类似
ptid mid daysleft userid
1 1 30 3
2 1 10 3
1 10 1 3
例如,对于userid3,它应该显示他的所有记录
$criteria=new CDbCriteria;
//start
$post_table = Model1::model()->tableName();
$post_count_sql = "(SELECT datediff(fsp.expirydate,CURDATE())as daysleft
from $post_table fsp
WHERE ( fsp.pid = ".$this->pid."
AND fsp.mid=".$this->mid.
)";
$criteria->select = array(
'*',
$post_count_sql . " as daysleft",
)
如果我删除一行,其他用户记录也会显示出来,但不会被删除。。。。。我真的很困惑如果你想在gridview中使用daysleft,你必须在模型中声明为模型变量
public $daysleft;
然后您可以在gridview中使用$data->daysleft 您得到的错误是什么?此处的虚拟列名是什么?@Letmese从tbl fsp中选择datedifffsp.expirydate、CURDATEas daysleft,其中fsp.pid=和fsp.mid=。。。。。。。。。。。。fsp.pid=和fsp.mid=。。。。。。。。这些没有值您想在gridview中使用daysleft吗?$this->pid和$this->midfsp.pid=和fsp.mid=的值应该满足哪些要求,但这些值为nullpid,mid始终为空?或者有一些值?是的,它总是空值,而这两个属性都是同一个模型,我给它们分配了select查询,它不分配这些值。我明白了,你是说这个代码吗。。。。。。这是从tbl fsp中选择datedifffsp.expirydate、CURDATEas daysleft的例外,其中fsp.pid=和fsp.mid=确实要传递pid和mid的空值吗?
public $daysleft;