Ik ben bezig om een applicatie te bouwen waarbij ik met een trait controleer of een object zichtbaar moet zijn. De trait ziet er als volgt uit:
Een gedeelte van een model waarin ik deze trait gebruik:
Het probleem is dat de isVisible() functie niet doet wat ik verwacht. Op een één of andere manier geeft $this->visible in de functie een (lege) array terug, terwijl ik een Collection-object verwacht.
]
Als ik (bijvoorbeeld vanuit een view) $forum->topics of $forum->visible aanroep, krijg ik keurig een Collection-object terug.
Roep ik $forum->isVisible() aan, en zet ik bovenin de functie in de trait dd($this->topics); dan krijg ik ook een Collection-object terug.
Doe ik het echter met dd($this->visible);, dan krijg ik een array terug!
Weet iemand waar dit aan kan liggen?
PHP:
1
2
3
4
5
6
7
8
9
10
| trait VisibleTrait { public function visible() { return $this->morphToMany(Group::class,'visible','visibilities'); } public function isVisible() : bool { $userGroups = is_null(Auth::user()) ? [Group::find(1)] : Auth::user()->groups; //TODO: beter maken :) return $this->visible->intersect($userGroups)->isNotEmpty(); } } |
Een gedeelte van een model waarin ik deze trait gebruik:
PHP:
1
2
3
4
5
6
7
8
9
10
11
| class Forum extends Model { use SoftDeletes, VisibleTrait {isVisible as isVisibleTrait;} public function isVisible() : bool { return $this->isVisibleTrait() && $this->category->isVisible(); } public function topics() { return $this->hasMany(Topic::class,'forum_id','id'); } } |
Het probleem is dat de isVisible() functie niet doet wat ik verwacht. Op een één of andere manier geeft $this->visible in de functie een (lege) array terug, terwijl ik een Collection-object verwacht.
]
Als ik (bijvoorbeeld vanuit een view) $forum->topics of $forum->visible aanroep, krijg ik keurig een Collection-object terug.
Roep ik $forum->isVisible() aan, en zet ik bovenin de functie in de trait dd($this->topics); dan krijg ik ook een Collection-object terug.
Doe ik het echter met dd($this->visible);, dan krijg ik een array terug!
Weet iemand waar dit aan kan liggen?
U zegt: ‘Alles is toegestaan.’ Zeker, maar niet alles is goed. Alles is toegestaan, maar niet alles is opbouwend.