2017-10-20 22 views
3

J'ai essayé de chercher l'erreur sur Internet, mais en vain. En dernier recours, je crée une question ici sur StackOverflow.LogicException avec le message '... doit renvoyer une instance de relation.'

J'ai deux simples modèles Eloquent mis en place:
1. Professeur (étend Authenticable) - depuis que je suis en utilisant MultiAuth pour le système.
2. GeneralNotice (étend Eloquent/modèle)

app\Teacher.php

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

app\Modules\GeneralNotice.php

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

C'est ma table de migration pour les avis généraux:

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(); 
    }); 

J'ai également ensemencé la base de données avec un avis de l'échantillon, pour vérifier si cela fonctionne. Lorsque j'essaie d'accéder à l'une de ces relations, je rencontre une erreur.

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

LogicException avec le message 'App \ Maître :: generalNotices doit retourner une instance de relation.'

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

LogicException avec le message 'App \ Modules \ GeneralNotice :: enseignant doit retourner une instance de relation.'

Si je tente d'accéder à la fonction de membre,
$teacher->generalNotices() OU
$notice->teacher()

Je reçois null.

Aidez-nous s'il vous plaît.

Répondre

9

Vous devez return relation, par exemple:

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

Je me excuse pour mon stupidité. Ça marche! –

+0

@AmruthPillai Je viens de faire exactement la même chose que vous, seulement en tombant sur cette réponse, je me suis soudain rendu compte! – Chud37