带有消息 '...必须返回关系实例。

2022-08-31 00:18:45

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

我设置了两个简单的雄辩模型:
1.教师(扩展可信) - 因为我对系统使用MultiAuth。
2. 一般通知(扩展雄辩/模型)

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;

LogicException,消息为“App\Modules\GeneralNotice::teacher 必须返回一个关系实例”。

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

我得到

请帮忙。


答案 1

您需要建立关系,例如:return

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

答案 2

推荐