Laravel 5 雄辩的/Laravel5连接遥远的关系(“哈索尼透”)
简言之,问题是: “页面”和“任务”具有由透视表“页面任务”链接的多对多关系。表“responses”通过外键“page\u task\u id”链接到该透视表 现在,我希望能够访问页面和任务的响应属于直接与雄辩。但是,hasManyThrough函数不起作用,因为它检查不同位置的外键: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
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方法。我定义了一个单独的模型,关系响应任务正是我试图建模的,但不起作用。因此,您说,这不是做这件事的有效记录方法。我在想,在我看来,当一个键保存所有信息时,为什么要存储两个冗余键?在这个问题上还有其他意见吗?看看这个