yii2-mongodb:我怎样才能使两个集合之间有很多或有一个关系

时间:2015-04-01 07:37:59

标签: mongodb yii2

我正在使用State和City这两个集合,并想要两者之间的关系,并使用以下代码:

常见\模型\ State.php

return $this->hasMany(City::className(), ['state_id'=>'_id']);

常见\模型\ City.php

return $this->hasOne(State::className(), ['_id' =>'state_id']);

当我运行以下代码时,它正在运行并返回城市的空白结果。

$model = \common\models\State::find()->all();

当我使用state_id更改集合中的ObjectId类型时,它会返回结果。所以请建议我如何相互关联state_id

2 个答案:

答案 0 :(得分:0)

试试这个......

使用$sqll="select max(seq) as mx from poll_portal"; $qryl = DB_query($sqll,$db); if ($resl = DB_fetch_array($qryl)) { if ($resl['mx'] != NULL and $resl['mx'] > 0 ){ $newidl = $resl['mx'] + 1; } else { $newidl=1; } } $sqlp="select count('title') as tp from poll_portal where title='".$_POST['title']."'"; $resultp=DB_query($sqlp,$db); $rowp = DB_fetch_array($resultp); if($rowp['tp']==1) { $title=$_POST['title']."(".$newidl.")"; } else { $title=$_POST['title']; }命名空间。

<强>常见\模型\ State.php

MongoBB

<强>常见\模型\ City.php

return $this->hasMany(City::className(), [new MongoDB\BSON\ObjectId(['state_id']) => '_id']);

答案 1 :(得分:-1)

例如;注释与评论类

中的单个用户相关联
public function getUser()
{
    return $this->hasOne(User::className(), ['_id' => 'user_id']);
}

在控制器中,您要在哪里检索注释和用户对象

    $query = Comment::find()->orderBy('created_at DESC');
    $dataProvider = new ActiveDataProvider([
        'pagination' => ['pageSize' =>5],
        'query' => $query,
    ]);

    return $this->render('index', [
        'dataProvider' => $dataProvider,
    ]);

您可以使用来自其他视图的评论来访问用户对象

$model->user['profile_url']