Ich versuche, ein Merkmal in einer Klasse namens Page zu platzieren. Ich muss auch eine Merkmalsfunktion umbenennen, damit sie nicht mit einer vorhandenen Klassenfunktion kollidiert. I dachte Ich habe das alles erfolgreich, aber ich bekomme einen Fehler, der auf den falschen Ort zeigt ?!So rufen Sie eine Merkmalsmethode mit Aliasnamen auf
Call to undefined function App\Pages\Models\myTraitDefaultScope()
Ich habe auch versucht: MyTrait\defaultScope($query)
anstatt zu versuchen, die widerstreitenden Funktion umzubenennen. Aber dann bekomme ich folgende Fehlermeldung:
Call to undefined function App\MyTrait\defaultScope()
unten ist das Merkmal und Klasse in separaten Dateien enthalten sind.
<?php
namespace App;
use Illuminate\Support\Facades\Auth;
trait MyTrait{
public function defaultScope($query){
return $query->where('active', '1')
}
}
.
<?php namespace Modules\Pages\Models;
use Illuminate\Database\Eloquent\Model;
use App\MyTrait;
class Page extends Model {
use MyTrait{
MyTrait::defaultScope as myTraitDefaultScope;
}
public function defaultScope($query){
return myTraitDefaultScope($query);
}
}
Ich bin gar nicht so genial an diese also bitte nicht schießen, wenn ich etwas schief haben :)
nicht zu 100% sicher, aber sollte das nicht sein 'return $ this-> myTraitDefaultScope ($ query);' so dass php nach der Funktion auf dem gleichen Objekt sucht? –