Próbuję umieścić cechę w klasie o nazwie Strona. Muszę również zmienić nazwę funkcji funkcji, aby nie kolidowała z istniejącą funkcją klasy. I myślałem, że Zrobiłem to wszystko pomyślnie, ale dostałem błąd, który wskazuje na niewłaściwą lokalizację ?!Jak wywołać metodę cechy z aliasem
Call to undefined function App\Pages\Models\myTraitDefaultScope()
Próbowałem również: MyTrait\defaultScope($query)
zamiast próbować zmienić nazwę konflikt funkcji. Ale wtedy pojawia się następujący błąd:
Call to undefined function App\MyTrait\defaultScope()
Poniżej jest cecha i klasy zawarte w oddzielnych plikach.
<?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);
}
}
nie jestem wszystkim, co niesamowite w tym więc proszę nie strzelać, jeśli mam coś źle źle :)
Nie 100% pewien, ale nie powinno to być 'return $ this-> myTraitDefaultScope ($ query);' tak że php szuka funkcji na tym samym obiekcie? –