带有消息''的LogicException必须返回一个关系实例。

时间:2017-10-20 07:03:14

标签: php laravel laravel-5 eloquent

尝试在整个互联网上搜索此错误,但都是徒劳的,所以作为最后的手段,我在StackOverflow上创建了一个问题。

我设置了两个简单的Eloquent模型:
1。老师(扩展可验证) - 因为我在系统中使用MultiAuth 的 2。 GeneralNotice (扩展Eloquent / Model)

app\Teacher.php

public function generalNotices()
{
    $this->hasMany('App\Modules\GeneralNotice');
}

app\Modules\GeneralNotice.php

public function teacher()
{
    $this->belongsTo('App\Teacher');
}

这是我的常规通知迁移表:

database/migrations/***_create_general_notices_table.php

Schema::create('general_notices', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->longtext('description')->nullable();
        $table->string('attachment')->nullable();
        $table->integer('teacher_id')->unsigned();
        $table->foreign('teacher_id')->references('id')->on('teachers');
        $table->date('dated_on')->default(now());
        $table->timestamps();
    });

我还在数据库中播放了样本通知,以检查它是否有效。

当我尝试访问任何这些关系时,我遇到了错误。

$teacher = Teacher::find(1); $teacher->generalNotices;

带有消息'App \ Teacher :: generalNotices的LogicException必须返回一个关系实例。'

$notice = GeneralNotice::find(1); $notice->teacher;

带有消息'App \ Modules \ GeneralNotice :: teacher的LogicException必须返回一个关系实例。'

如果我尝试访问成员函数,
$teacher->generalNotices()
$notice->teacher()

我得到 null

请帮忙。

1 个答案:

答案 0 :(得分:26)

您需要public function teacher() { return $this->belongsTo('App\Teacher'); } 关系,例如:

base=try
ARCH := $(shell test `uname -i` = "x86_64"; echo $$? )

ifeq ($(ARCH),0)
define PLATFORM_64 =
out3
endef
endif

define ALL =
out1
out2
$(PLATFORM_64)
endef

all: $(addprefix $(base)., $(ALL))