2017-09-18 4 views
1

I durch type_order Abfrage in Bezug auf sortieren möchten:Anruf auf eine Elementfunktion addEagerConstraints() auf null

public function posts() 
{ 
    if (($this->type_order) == '1') { 
     $type = 'id'; 
     return $this->belongsToMany(Post::class, 'feed_posts')->orderBy($type); 
    } 
} 

Aber bekommen Fehler:

FatalThrowableError 
Call to a member function addEagerConstraints() on null 
+0

zurückzukehren vergessen Wo sehen Sie Beiträge() -Methode deklarieren? –

Antwort

0

Dies geschieht, weil Laravel schafft oft eine leere Instanz Ihres Modells zum Erstellen von Abfragen/neuen Instanzen. Wenn also eine neue Instanz zum Erstellen einer Abfrage erstellt wird, gibt posts() tatsächlich null anstelle einer BelongsToMany Beziehung zurück.

Um dies zu beheben, müssen Sie die Bedingung entfernen und das Problem auf andere Weise lösen.

0

try Verwendung setType() Art von Verfahren zur Einstellung dann wie dieses ich dieses Problem hatte $vaiable->setType()->posts;

public $newType = 'id'; // default ordering is by id 

public function setType() 
{ 
    if (($this->type_order) == '1') { 
     $this->newType = 'id'; 
    } 
    return $this; 
}  

public function posts() 
{ 
    $result = $this->belongsToMany(Post::class, 'feed_posts'); 
    return $result->orderBy($this->newType); 
} 
0

Anrufart, weil ich

class Test extends Model 
{ 
    public function tests(){ 
     $this->hasMany(Test::class); 
    } 
} 
Verwandte Themen