laravel - 关系 hasOne, hasMany Eloquent 与 MongoDB 返回空数组
问题描述
我正在尝试使用jenssegers/mongodb库在 Lumen 中建立 hasOne / hasMany 关系,但这对我不起作用,我确实尝试了以下选项:
return $this->hasMany(Token::class,'_id.toString()','token.toString()');
return $this->hasMany(Token::class,'_id','token');
- 当我在方法中使用原始查询时它对我有用
- 当我插入数据时,我将外部字段保存为
new ObtjectID
这是用户模型:
<?php
namespace App\Models;
use Jenssegers\Mongodb\Eloquent\Model;
use MongoDB\BSON\ObjectID;
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 App\Models;
use Jenssegers\Mongodb\Eloquent\Model;
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')
);
}
谢谢你读我
解决方案
您应该像在文档中一样调整您的关系:
在 Usuario 模型中:
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");
}
推荐阅读
- python - 给定Django-Python中模型内部的名称,从云存储访问图像
- r - 识别 R 向量中的特定元素顺序模式
- microsoft-teams - 有没有办法使用 Graph API 将通知(主动消息)发送到活动和聊天窗口,而之前没有对话 ID?
- python - Networkx Spring Layout:减少 iIsolated 节点到主图的距离
- c# - EF 6 代码优先为多对多表生成额外表?
- sql - 如何检查这两个值是否以 2 组的形式存在于 cell1 或 cell 2 中
- java - 封闭范围必须是 Java 流的最终范围
- reactjs - 在 ReactJS 中管理大量表单输入字段的专业方法是什么?
- python - 更改 def 函数中的变量
- java - 从 Spring Boot 应用程序中的请求和返回值派生内容类型