Laravel created_by / modified_by关系

时间:2014-12-09 17:54:12

标签: laravel-4 model eloquent

我试图以典型的belongsTo关系工作。然而,它一直说该列未在模型中设置,即使在实际的数据库中查找它也在那里。

我试图查看源代码以及尝试许多方法来绕过这个问题,但似乎什么也没做。

public function modifiedBy()
{
    return $this->belongsTo('\Modules\Users\Model\User', 'modified_by');
}

public function createdBy() 
{
    return $this->belongsTo('\Modules\Users\Model\User', 'created_by');
}

这是模型中的代码,我使用PSR-0来定义模块,更好地拆分逻辑(没有问题)但是使用它会产生错误

Undefined property: \Modules\Module\Model\CurrentModel::$modified_by

这是来自种子,将一些初始信息推送到数据库中。

$user = Sentinel::findById(1);
$model = new CurrentModel;
$model->modifiedBy()->associate($user);
$model->save();

这基本上是它如何结合在一起,我已经尝试了一段时间来弄清楚出了什么问题,但我正在调用空白。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

找到解决方案。虽然不是一个修复,但我认为这是laravel的一个问题所以我可能会考虑将其添加为错误报告(虽然这可以在laravel 5中修复?)。

基本上使用modified_by我需要定义它正在使用的列,而不是让laravel自动生成它(为了“干净地”这样做)。然而,“bug”(仅称之为bug,因为目前我只能将其视为一个意外的问题)使得它无法定义它将使用的列,你必须让laravel为你决定。

所以我把功能改成了这样:

public function modifiedby()
{
    return $this->belongsTo('\Modules\Users\Model\User');
}

这使得laravel假设该列为modifiedby_id,但通过更改我的迁移以反映没有更多错误。