这些是我的模特
class DateAttribute extends Eloquent{
public function xmlDocument(){
return $this->belongsTo('XMLDocument');
}
}
class XMLDocument extends Eloquent{
public function dateAttribute(){
return $this->hasOne('DateAttribute');
}
}
XMLDocument
模型具有DateAttribute
模型之一。我可以成功插入两个表。
现在我正在尝试阅读特定的xml文档。换句话说,我试图查看xml文档。
我在我看来试过这个:
<td>{{$xmlDocument->dateAttribute->name}}</td>
I got this error:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'date_attribute.x_ml_document_id' in 'where clause' (SQL: select * from `date_attribute` where `date_attribute`.`x_ml_document_id` = 10 limit 1)
我不知道为什么会发生这种情况,我有很多关系并且都在工作,只是这个没有用
请注意,x_ml_document_id
与underscore
之间的错误讯息为x
,我搜索了所有代码,我不知道完全有这个词。
请帮助
答案 0 :(得分:3)
这是由模型的命名引起的。默认情况下,Eloquent会尝试通过读取您的模型名称来查找您正在使用的本地和外键。如您所见,您的DateAttribute
模型变为date_attribute
。 CamelCase转换为下划线。
请注意,Eloquent根据模型名称假定关系的外键。在这种情况下,假设Phone模型使用user_id外键。如果要覆盖此约定,可以将第二个参数传递给hasOne方法。此外,您可以将第三个参数传递给方法,以指定应该用于关联的本地列
因此,要解决您的问题,请在hasOne
的第二个和第三个参数中定义外键/本地键。 E.g:
class XMLDocument extends Eloquent
{
// Define table name
protected $table = 'xml_document';
public function dateAttribute()
{
return $this->hasOne('DateAttribute', 'xml_document_id');
}
}