拉拉威尔4难以捉摸的关系


Laravel 4 Eloquent Relationship

我有两个表:

`tasks {id, task_name, status_id}`
`statuses {id, status_name }`

一个任务一次只能有一个状态,例如挂起、活动、完成、中止等

这就是我到目前为止所拥有的。

class Task extends Eloquent
{
    public function status
    {
        return $this->hasOne('Status', 'id');
    }
}

当我尝试$task->status->status_name时,我会得到"尝试获取非对象的属性"错误!

我的状态类看起来像这个

class Status extends Eloquent
{
    protected $table = 'statuses';
}

你能解释一下我为什么会犯这个错误吗?

由于您在Task表中获得了外键,因此您可以使用belongsTo,Eloquent将在tasks表中为您查找列status_id

public function status
{
 return $this->belongsTo('Status');
}

了解更多信息http://laravel.com/docs/4.2/eloquent在一对一部分

对于错误Trying to get a property of non object请确保表tasksstatus_id列中有一个值。