在这里使用Laravel 5.1。 我创建了两个类,一个扩展另一个类:
abstract class ActivityTimeline extends Model
其中:
$this->fields = [
'owner_id',
'contact_name',
'mailing_label',
'source_id',
'source_raw',
'initial_referer_raw',
'primary_person',
'connections',
];
foreach ($this->fields as $field) {
if (method_exists($this, $field)) {
dd('the method exists', $this, $field);
$timelineActivity[$field] = $this->{$field}();
}
}
和
class ContactActivity extends ActivityTimeline {
其中:
public function primary_person()
{
return $this->getPrimaryPerson($this->record);
}
“dd('方法存在',$ this,$ field);”返回以下内容:
“方法存在”
ContactActivity {#963▶}
“primary_person”
然而,当这个if语句通过,并且我尝试调用我刚检查过的方法时,我得到:
Builder.php第2123行中的BadMethodCallException: 调用未定义的方法Illuminate \ Database \ Query \ Builder :: primary_person()
所以我似乎没有在这里使用ContactActivity对象,即使dd显示我是。任何人都知道我在这里做错了什么来得到错误的对象?
答案 0 :(得分:0)
我认为这是因为你从父类调用了一个子方法。 尝试添加
abstract function primary_person();
在ActivityTimeline类
上