GridView 多表关联 [ 求助交流 ]
首先先感谢前辈http://www.yiichina.com/tutorial/120 的教程有点了解,但是使用中还是出现了问题。请各位大神解决。谢谢
我的表为 gb_user(id,username),gb_leaveword(id,userid) Leaveword.php中通过gii生成了以下代码
class Leaveword extends \app\core\base\BaseActiveRecord
{
***
public function getUser()
{
return $this->hasOne(User::className(), ['id' => 'userid']);
}
}
LeavewordSearch.php中加入了以下代码
class LeavewordSearch extends Leaveword
{
public $username; //<=====就是加在这里
***
}
修改了LeavewordSearch中的search函数
public function search($params)
{
$query = Leaveword::find();
$query->join(['user']); //添加了这个
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$dataProvider->setSort([
'attributes' => [
/* 其它字段不要动 */
/* 下面这段是加入的 */
/*=============*/
'username' => [
'asc' => ['gb_user.username' => SORT_ASC],
'desc' => ['gb_user.username' => SORT_DESC],
'label' => 'UserName'
],
/*=============*/
]
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere([
'id' => $this->id,
'userid' => $this->userid,
'createtime' => $this->createtime,
]);
$query->andFilterWhere(['like', 'title', $this->title])
->andFilterWhere(['like', 'content', $this->content]);
$query->andFilterWhere(['like', 'gb_user.username', $this->username]);//加入了这段
return $dataProvider;
}
最后修改了Leaveword的index.php文件
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'], //添加最后的序号。
'id',
['label'=>'用户', 'attribute' => 'username', 'value' => 'gb_user.username' ],
'createtime',
'title',
'content:ntext',
['class' => 'yii\grid\ActionColumn'],//这一行是最后增加操作方法的。
],
]); ?>
最后出现的问题是:Getting unknown property: app\models\Leaveword::gb_user,无法找到gb_user对象,请问有什么方法解决呢?
共 2 条回复
zkh90644
注册时间:2015-05-11
最后登录:2015-12-23
在线时长:2小时34分
最后登录:2015-12-23
在线时长:2小时34分
- 粉丝0
- 金钱150
- 威望0
- 积分170