Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
yii2 mongodb:如何使两个集合之间有多个或一个关系_Mongodb_Yii2 - Fatal编程技术网

yii2 mongodb:如何使两个集合之间有多个或一个关系

yii2 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(), [

我正在使用两个集合,即州和市,并希望了解它们之间的关系,并使用以下代码来表示:

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'])]);
当我运行下面的代码时,它正在运行并返回城市的空白结果

$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']);但不起作用