[英]laravel one to one relationship
我有带有这些列的xml_document
表:
id
general_information_id
我有这些列的general_information
表:
id
domain
log_file
它们之间的关系是一对一的。
我是否正确建立了关系? 或者我需要将xml_document_id
列添加到general_information
表中。
其次:
我已经添加一行到xml_doucment
,现在我想将行添加到general_information
这个新行链接到xml_document
我尝试了这个:
$xmlDocument = XmlDocument::find(Input::get(4));
$generalInformation = new GeneralInformation($dataGeneralInformation);
$generalInformation->xmlDocument()->associate($xmlDocument);
//$xmlDocument->generalInformation()->attach($generalInformation);
$generalInformation->save();
$xmlDocument->save();
但我得到了错误xml_document_id
列不中存在general_information
表。
我尝试用attach
替换associate
,但是我发现attach
不存在。
请帮助我,我已经尝试过这种一对一的关系,我不知道做id的正确方法是什么。 我不知道在数据库中的哪里添加列以及在模型中要做什么。 我尝试了很多事情,但仍然感到困惑。
class GeneralInformation extends Eloquent{
.....
public function xmlDocument(){
return $this->belongsTo('XmlDocument');
}
}
class XmlDocument extends Eloquent {
....
public function generalInformation(){
return $this->hasOne('GeneralInformation','general_information_id');
}
}
要建立one-to-one
关系,您需要将父表的primary key
作为foreign key
存储在子表中。 所以,如果xml_document
是父母,如果它包含许多general_information
则id
基于场xml_document
应该是存在于general_information
表作为xml_document_id
。
因此,您可以像这样建立one-to-one
关系:
// xml_document model
public function generalInfo()
{
return $this->hasOne('GeneralInformation');
}
然后声明GeneralInformation
模型。
这就是你想要的:
class GeneralInformation extends Eloquent
{
public function xmlDocument()
{
return $this->hasOne('XmlDocument');
}
}
class XmlDocument extends Eloquent
{
public function generalInformation()
{
return $this->belongsTo('GeneralInformation','general_information_id');
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.