这些是我的模型
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
,在x
和ml
之间有一个underscore
,我搜索了所有的代码,我根本没有那个词。
帮助请
这是由模型的命名引起的。默认情况下,Eloquent试图通过读取模型名来找出您正在使用的本地键和外键。如您所见,您的DateAttribute
模型变成了date_attribute
。CamelCase被转换为下划线
请注意,Eloquent根据模型名假定关系的外键。在本例中,假定Phone模型使用user_id外键。如果您希望重写此约定,您可以向hasOne方法传递第二个参数。此外,您可以向方法传递第三个参数,以指定应该用于关联
的本地列。
因此,要解决您的问题,请在hasOne
的第二个和第三个参数中定义外/本地键。例句:
class XMLDocument extends Eloquent
{
// Define table name
protected $table = 'xml_document';
public function dateAttribute()
{
return $this->hasOne('DateAttribute', 'xml_document_id');
}
}