Laravel 5 雄辩的/Laravel5连接遥远的关系(“哈索尼透”)

Laravel 5 雄辩的/Laravel5连接遥远的关系(“哈索尼透”),laravel-5,eloquent,pivot-table,has-one-through,Laravel 5,Eloquent,Pivot Table,Has One Through,简言之,问题是: “页面”和“任务”具有由透视表“页面任务”链接的多对多关系。表“responses”通过外键“page\u task\u id”链接到该透视表 现在,我希望能够访问页面和任务的响应属于直接与雄辩。但是,hasManyThrough函数不起作用,因为它检查不同位置的外键: public function task(){ return $this->hasManyThrough('PageTask', 'Task', 'page_task_id', 'task_id

简言之,问题是:

“页面”和“任务”具有由透视表“页面任务”链接的多对多关系。表“responses”通过外键“page\u task\u id”链接到该透视表

现在,我希望能够访问页面和任务的响应属于直接与雄辩。但是,hasManyThrough函数不起作用,因为它检查不同位置的外键:

 public function task(){
    return $this->hasManyThrough('PageTask', 'Task', 'page_task_id', 'task_id');
}
“字段列表”中的未知列“tasks.page\u task\u id”

这意味着eloquent检查任务表,该任务表具有指向page_任务的外键page_任务id。但是在我的模型中,page_tasks表有一个指向任务的外键task_id。我怎样才能雄辩地说出那个事实呢

我尝试的另一种方法是使用先前定义的现有关系:

public function task(){
    return $this->page_task->task();
}
然而,这告诉我,没有所谓的“任务”方法

建议的方法是什么?我做错了什么




如果需要,以下是一些详细信息:

“页面”和“任务”与链接它的透视表页面任务有多对多关系

页面模型:

class Page extends Model {
    public function tasks(){
        return $this->belongsToMany('Task', 'page_tasks');
    }
}
任务模型:

class Task extends Model {
    public function pages()
    {
        return $this->belongsToMany('Page', 'page_tasks');
    }
}
这个很好用

响应模型如下所示

class Response extends Model {
    protected $fillable = [
        'page_task_id',
    ];

    public function page_task(){
        return $this->belongsTo('App\PageTask', 'page_tasks');
    }

    public function task(){
         ??????
    }
}
PageTask模型如下所示:

class PageTask extends Model {
    protected $fillable = [
        'page_id',
        'task_id',
     ];
    public function page(){
        return $this->belongsTo('Page');
    }
    public function task(){
        return $this->belongsTo('Task');
    }
    public function responses(){
        return $this->hasMany('Response');
    }
}

与其向我们展示你的模型(这很有帮助),你想做什么?您想从何处调用什么?首先,您应该为响应定义一个单独的模型,并在该模型中分别定义关系响应任务以及响应页面。您不应该使用透视表将任何其他模型链接到相关的模型,因为这不是Laravel方法。我定义了一个单独的模型,关系响应任务正是我试图建模的,但不起作用。因此,您说,这不是做这件事的有效记录方法。我在想,在我看来,当一个键保存所有信息时,为什么要存储两个冗余键?在这个问题上还有其他的观点吗?看看这个,而不是向我们展示你的模型(这很有帮助),你想做什么?您想从何处调用什么?首先,您应该为响应定义一个单独的模型,并在该模型中分别定义关系响应任务以及响应页面。您不应该使用透视表将任何其他模型链接到相关的模型,因为这不是Laravel方法。我定义了一个单独的模型,关系响应任务正是我试图建模的,但不起作用。因此,您说,这不是做这件事的有效记录方法。我在想,在我看来,当一个键保存所有信息时,为什么要存储两个冗余键?在这个问题上还有其他意见吗?看看这个