首页 > 解决方案 > 关系 hasOne, hasMany Eloquent 与 MongoDB 返回空数组

问题描述

我正在尝试使用jenssegers/mongodb库在 Lumen 中建立 hasOne / hasMany 关系,但这对我不起作用,我确实尝试了以下选项:

这是用户模型:

<?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')
          );
      }

谢谢你读我

标签: laravelmongodbrelationshiplumen

解决方案


您应该像在文档中一样调整您的关系:

在 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");
    }

推荐阅读