我正试图使用jensegers/mongodb库在Lumen中建立hasOne/hasMany关系,但这对我不起作用,我确实尝试了以下选项:
return $this->hasMany(Token::class,'_id.toString()','token.toString()');
return $this->hasMany(Token::class,'_id','token');
- 当我在方法中使用原始查询工作时它对我有效
- 当我插入数据时,我将外部字段保存为
new ObtjectID
这是用户模型:
<?php
namespace AppModels;
use JenssegersMongodbEloquentModel;
use MongoDBBSONObjectID;
class Usuario extends Model
{
//Tabla seleccionada
protected $table = 'usuario';
//Campos de la tabla
protected $fillable = [
'_id',
'usuario',
'token',
];
//Llave primaria
protected $primaryKey = '_id';
//Relaciones
public function token()
{
return $this->hasMany(Token::class, 'usuario','_id');
}
}
这是代币模型:
<?php
namespace AppModels;
use JenssegersMongodbEloquentModel;
class Token extends Model
{
//Tabla seleccionada
protected $table = 'token';
//Campos de la tabla
protected $fillable = [
'_id',
'nombre',
'usuario',
'token',
'fecha',
];
//Llave primaria
protected $primaryKey = '_id';
//Relaciones
public function usuario()
{
return $this->belongsTo(Usuario::class,"_id","usuario");
}
}
这就是方法:
$result = Usuario::with('token')->where('eliminado', 0)->get();
if ($result->count() > 0) {
return response() -> json(
array('data' => $result, 'message' => config('constants.messages.3.message')),
config('constants.messages.3.code')
);
}else{
return response() -> json(
array('data' => $result, 'message' => config('constants.messages.4.message')),
config('constants.messages.4.code')
);
}
感谢阅读我的
您应该像在doc:中那样调整关系
在惯用模型中:
public function tokens()
// it's convention to use 's' because of this relation returns collection not
//single model instance ....
{
return $this->hasMany(Token::class, 'usuario');
}
在令牌模型中:
public function usuario()
{
return $this->belongsTo(Usuario::class,"usuario");
}