我想在gridview中显示另一个表中的列。
在我的控制器中的actionIndex:
public function actionIndex()
{
$user_id = \Yii::$app->user->identity->id;
$queryFile = PowerGen::find();
$queryFile ->select(['submitted_by','filename.file_name','filename.submitted_by'])
->joinWith('filename')//Tells Yii to use the complains relation that we define below. By default it is an inner join
->where(['filename.submitted_by' => $this->user_id]);
$dataProvider= new ActiveDataProvider([
'query' => $query,
'pagination' => false,
]);
return $this->render('index', ['dataProvider4'=>$dataProvider]);
}
在我的模型中:
public function fileName()
{
$user_id = \Yii::$app->user->identity->id;
return $this->hasMany(Filename::className(), 'submitted_by' => $this->user_id);
}
错误是:
Error
PHP Parse Error – yii\base\ErrorException
syntax error, unexpected '=>' (T_DOUBLE_ARROW)
该行中的错误是什么。
谢谢
答案 0 :(得分:1)
像使用hasMany()
public function fileName()
{
$user_id = \Yii::$app->user->identity->id;
return $this->hasMany(Filename::className(), ['submitted_by' => $this->user_id]);
}
答案 1 :(得分:1)
首先,我认为您的功能必须是这样的:
public function fileName()
{
return $this->hasMany(Filename::className(), ['submitted_by' => 'user_id']);
}
您的查询如下:
$user_id = \Yii::$app->user->identity->id;
$queryFile = PowerGen::find();
$queryFile ->select(['submitted_by','filename.file_name','filename.submitted_by'])
->joinWith('filename')
->where(['filename.submitted_by' => $user_id]);
您要声明变量$user_id
$ user_id = \ Yii :: $ app-> user-> identity-> id;
但是您没有在任何地方使用它。
答案 2 :(得分:0)
您以错误的方式定义了您的关系:
#include <algorithm>
为前缀,例如get
。getFileName()
的第二个参数应为带有列名映射的数组。您不应在此处使用动态值或模型属性。hasMany()
或POST / GET数据。例如,如果您尝试在控制台中使用此关系,它将破坏MVC模式并会产生问题。
Yii::$app->user->identity->id