关系hasOne,hasMany Eloquent与MongoDB返回空数组



我正试图使用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");
}

最新更新