Laravel与Array值的关系

时间:2017-09-11 06:24:18

标签: mongodb laravel jenssegers-mongodb

我正在使用一对一的关系。我的型号代码是:

public function training_type()
{
    return $this->hasone('App\Training_type','id','type');
}

但参数" id"是在一个数组内,我尝试使用以下代码但不工作:

public function training_type()
{
    return $this->hasone('App\Training_type','types.id','type');
}

任何人都给我很好的建议。

Training_type表结构是,

"company_id": "company1",
"types": [
{
"id": "1",
"name": "Generic"
},
{
"id": "2",
"name": "Compensation and Benefits"
},
{
"id": "3",
"name": "Labor and Employment Law"
}
],
"updated_at": ISODate("2017-08-10T10:24:40.000+05:30")
} 

另一个表结构是,

{
"company_id": "company1",
"title": "Fire Extinguisher\t",
"content_type": "",
"links": [
{
"link": ""
},
{
"link": ""
}
],
"updated_at": ISODate("2017-08-10T10:24:40.000+05:30"),
"type": "1"
}

2 个答案:

答案 0 :(得分:0)

将foreign_key传递给关系的常见做法是:

public function training_type()
{
    return $this->hasone('App\Training_type','foreign_key');
}

foreign_key来自您要链接的表。

答案 1 :(得分:0)

我在Largo中使用了mongodb和jenssegers / laravel-mongodb, 我从模特那里得到了这份文件:

用户:

{
    "_id" : ObjectId("5bb8013422bb405901652cd9"),
    "name" : "ahmed",
    "email" : "ahmed@admin.com",
    "role" : {
        "name" : "admin",
        "_id" : ObjectId("5bb8013422bb405901652cd2")
    }
}

角色:

{
    "_id" : ObjectId("5bb8013422bb405901652cd2"),
    "name" : "admin"
}

,我想使用hasOne关系来获得使用角色, 我在用户模型中做到了:

public function role()
    {
        return $this->hasOne('App\Models\Role', '_id', 'role._id');
    }

如您所见,我将角色插入为一个数组,其中包含:id,DB用户文档中的name, 当我用

测试时
dd(\Auth::user()->role);

它工作得很好。