yii2 mongodb:如何使两个集合之间有多个或一个关系
我正在使用两个集合,即州和市,并希望了解它们之间的关系,并使用以下代码来表示: common\models\State.phpyii2 mongodb:如何使两个集合之间有多个或一个关系,mongodb,yii2,Mongodb,Yii2,我正在使用两个集合,即州和市,并希望了解它们之间的关系,并使用以下代码来表示: common\models\State.php return $this->hasMany(City::className(), ['state_id'=>'_id']); return $this->hasOne(State::className(), ['_id' =>'state_id']); return $this->hasMany(City::className(), [
return $this->hasMany(City::className(), ['state_id'=>'_id']);
return $this->hasOne(State::className(), ['_id' =>'state_id']);
return $this->hasMany(City::className(), [new MongoDB\BSON\ObjectId(['state_id']) => '_id']);
return $this->hasOne(State::className(), ['_id' => new MongoDB\BSON\ObjectId(['state_id'])]);
common\models\City.php
return $this->hasMany(City::className(), ['state_id'=>'_id']);
return $this->hasOne(State::className(), ['_id' =>'state_id']);
return $this->hasMany(City::className(), [new MongoDB\BSON\ObjectId(['state_id']) => '_id']);
return $this->hasOne(State::className(), ['_id' => new MongoDB\BSON\ObjectId(['state_id'])]);
当我运行下面的代码时,它正在运行并返回城市的空白结果
$model = \common\models\State::find()->all();
当我使用
ObjectId
更改集合中的state\u id
类型时,它将返回结果。因此,请建议我如何键入相关的状态id
。例如;注释与注释类中的单个用户关联
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']
试试这个
使用MongoBB
名称空间
common\models\State.php
return $this->hasMany(City::className(), ['state_id'=>'_id']);
return $this->hasOne(State::className(), ['_id' =>'state_id']);
return $this->hasMany(City::className(), [new MongoDB\BSON\ObjectId(['state_id']) => '_id']);
return $this->hasOne(State::className(), ['_id' => new MongoDB\BSON\ObjectId(['state_id'])]);
common\models\City.php
return $this->hasMany(City::className(), ['state_id'=>'_id']);
return $this->hasOne(State::className(), ['_id' =>'state_id']);
return $this->hasMany(City::className(), [new MongoDB\BSON\ObjectId(['state_id']) => '_id']);
return $this->hasOne(State::className(), ['_id' => new MongoDB\BSON\ObjectId(['state_id'])]);
代码使用数据库中的数据类型。你确定你保存的数据在数据库中使用了正确的格式吗?我的城市文档{“_id”:ObjectId(“54F55C3AE67A2BD315202D3”),“state_id:“54f44a940ca79e3233fc825d”,“title:“okhlama”,“slug:“okhlama”,“code:”12”,“status:“1”,“创建时间”:“1424853572”,“更新时间”:1425962524}我的状态文件{“_id”:ObjectId(“54f44a940ca79e3233fc825d”),“title:“drish”,“slug:“drish”,“code:“123”,“status:“1”,“created:”创建于“:”1424853572”,“updated:”更新于“:1425360052}将状态id另存为ObjectId,它将起作用是的,但我如何键入它。我做了$model->state\u id=new\MongoId($postData['City']['state\u id']);但不起作用