我正在使用一对一的关系。我的型号代码是:
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"
}
答案 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);
它工作得很好。