我有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
列的错误。
我尝试将associate
替换为attach
,但我认为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');
}
}
答案 0 :(得分:3)
要建立one-to-one
关系,您需要将父表的primary key
存储为子表foreign key
。因此,如果xml_document
是父级,并且它包含许多general_information
,那么id
的{{1}}字段应该出现在xml_document
表中{{1} }}
因此,您可以像这样构建general_information
关系:
xml_document_id
然后声明one-to-one
模型。
答案 1 :(得分:0)
这就是你想要的:
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');
}
}