【发布时间】:2014-12-01 07:07:20
【问题描述】:
非常简单的问题:Laravel eloquent docs 指定 morphTo 函数定义了多态、反向一对一或多关系。无论如何(可能是 Laravel 分叉?)来创建一个多态的、非反向的一对一或多关系,而无需自己动手并深入研究 Laravel 的 Eloquent 关系代码?
明确一点:我想做这样的事情:
class Answer extends Eloquent {
protected $fillable = array('answer_id', 'answer_type');
public function answers() {
return $this->straightMorphTo('answer_id', 'answer_type', 'id');
}
}
class AnswerFirst extends Eloquent {
protected $fillable = array('id', 'text');
public function answers() {
return $this->belongsTo('Answer');
}
}
class AnswerSecond extends Eloquent {
protected $fillable = array('id', 'number');
public function answers() {
return $this->belongsTo('Answer');
}
}
//
// Answer
// ------------------------------------
// answer_id | answer_type |
// ------------------------------------
// 1 | AnswerFirst |
// 2 | AnswerSecond |
// ------------------------------------
//
// AnswerFirst
// ------------------------------------
// id | text |
// ------------------------------------
// 1 | 1rst part |
// 1 | 2nd part |
// ------------------------------------
//
// AnswerSecond
// ------------------------------------
// id | number |
// ------------------------------------
// 2 | 1 |
// 2 | 2 |
// ------------------------------------
//
然后,Answer::with('answers')->find(2) 应该返回
{
id:'2',
answer_type:'AnswerSecond',
answers: [
{id:'2',number:'1'},
{id:'2',number:'2'},
]
}
【问题讨论】: