从外键获取表中的值

时间:2016-01-31 18:56:00

标签: php model yii2 relation

嗨我有两张桌子和型号。首先是

  

用户

和第二

  

新闻

我想从表News获取用户ID并绘制她的姓名。表News的打印屏幕:

enter image description here

我正在尝试使用该功能:

public function getUrUser()
{
    $q= News::find()->where(['urUser_Id' =>'Id'])->one();
    $RoyalUserData=User::findOne($q);
    //$RoyalUserData= User::find()->where(['Id' => $q])->one();
    return $RoyalUserData->Name;
}

但这不起作用。只有当我为egzample开出q值3时才有效。我知道这可能是我的第一行功能中的错误代码。我知道这很容易,但我是初学者,我已经用代码进行了大约1小时的战斗。任何人都可以帮助我吗?

在我看来,我用这个:

<?=$model->getUrUser();?>

我在ListView中使用它。

我的控制器:

public function actionIndex()
    {
        $model = new NewsForm();
        $searchModel = new NewsSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
        $dataProvider->setSort(['defaultOrder' => ['Id'=>SORT_DESC]]);

        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            $model->saveNews();
            return $this->redirect(['/content/news']);
        } else {
            return $this->render('index', [
                        'model' => $model,
                        'searchModel' => $searchModel,
                        'dataProvider' => $dataProvider,
            ]);
        }
    }

我使用_item的索引:

echo ListView::widget( [
    'dataProvider' => $dataProvider,
    'itemView' => '_item',
],  $options = ['class' => 'sorter'] ); ?>

_item的内容

<?php
use yii\helpers\Html;
?>  


Treść Newsa:
<?=$model->Text;?> <br>
Autor:
<?=Yii::$app->user->identity->Name?> 
<?=Yii::$app->user->identity->Surname?> <br>
Status Newsa:
<?=$model->cnNewsContentType_Id;?> <br>

  <?= Html::a('Update', ['update', 'id' => $model->Id], ['class' => 'btn btn-primary']) ?>
        <?= Html::a('Delete', ['delete', 'id' => $model->Id], [
            'class' => 'btn btn-danger',
            'data' => [
                'confirm' => 'Are you sure you want to delete this item?',
                'method' => 'post',
            ],
        ]) ?><br><br><br>

2 个答案:

答案 0 :(得分:2)

News::find()->where(['urUser_Id' =>'Id'])->one()返回模型而非字段

然后你必须通过这种模式得到id字段

public function getUrUser($id)
{
    // you already have the news model so don't need retrieve it 
    //  it's enough pass the urUser_Id by $id

    $RoyalUserData=User::findOne($id);

    return $RoyalUserData->Name;
}

然后,如果你想在_item中显示($ RoyalUserData)名称

<?=$model->getUrUser($model->urUser_Id);?>

答案 1 :(得分:0)

$http.get(serviceUrl).success(function (data, status, headers, config) {
                      $scope.comboData = [{
        year: "2008",
        "Accpeted": "20",
        "Bed Assigned": "16",
        "Patient No-Show": "12"
    }, {
        year: "2009",
        "Accpeted": "10",
        "Bed Assigned": "22",
        "Patient No-Show": "30"
    }, {
        year: "2010",
        "Accpeted": "5",
        "Bed Assigned": "14",
        "Patient No-Show": "20"
    }, {
        year: "2011",
        "Accpeted": "5",
        "Bed Assigned": "12",
        "Patient No-Show": "19"
    }

    ];
        });

在用户模型中,您应该创建relation

public function getUrUser()
{
    $q = News::find()->where(['urUser_Id' =>'Id'])->one();
    return $q->user->name;
}