我有事件模型,一个事件有一个项目,一对一关联,我在事件模型中有写功能来获得项目,如下所示
public function getprojects() {
return $this->hasOne(app\models\Project::className(), ['id' => 'projectid']);
}
下面是我的 Controller 的代码
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$project = $model->project;
return $this->redirect(['eventdetail', 'id' => $model->id, 'project' => $project]);
}
和详细 View 代码是
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'id',
'projectid',
'userid',
'milestone',
'datetime',
],
]) ?>
我想打印项目的标题而不是 projectid ,我们从关联表中获取标题如何获取标题并在详细 View 中打印
最佳答案
1) 如果您只需要文本值,最简单的方法是更改 projectId
至 projects.title
:
'attributes' => [
'projects.title',
],
同样根据标签将取自
Projects
模型。2) 对于更复杂的情况和不同的格式,您可以调用任何模型方法来检索所需的数据。
例子:
'attributes' => [
[
'attribute' => 'avatar',
'format' => 'raw',
'value' => $model->getAvatar(),
],
],
关于activerecord - yii2 如何使用外键获取关系和获取 id 的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28985096/