[Laravel] morphToMany geeft array ipv Collection-object

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • ikvanwinsum
  • Registratie: Februari 2011
  • Laatst online: 05-10 18:06
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:
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.

Beste antwoord (via ikvanwinsum op 21-01-2018 21:30)


  • Kappie
  • Registratie: Oktober 2000
  • Laatst online: 15:27

Kappie

Tell me your secrets...

Probeer het eens een andere naam te geven dan visible. Visible wordt namelijk ook gebruikt Serialization (zie https://laravel.com/docs/...ding-attributes-from-json) en is een Array :)

He does fit the profile perfectly. He's intelligent, but an under-achiever; alienated from his parents; has few friends. Classic case for recruitment by the Soviets.

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Kappie
  • Registratie: Oktober 2000
  • Laatst online: 15:27

Kappie

Tell me your secrets...

Probeer het eens een andere naam te geven dan visible. Visible wordt namelijk ook gebruikt Serialization (zie https://laravel.com/docs/...ding-attributes-from-json) en is een Array :)

He does fit the profile perfectly. He's intelligent, but an under-achiever; alienated from his parents; has few friends. Classic case for recruitment by the Soviets.


Acties:
  • 0 Henk 'm!

  • ikvanwinsum
  • Registratie: Februari 2011
  • Laatst online: 05-10 18:06
Kappie schreef op zondag 21 januari 2018 @ 21:03:
Probeer het eens een andere naam te geven dan visible. Visible wordt namelijk ook gebruikt Serialization (zie https://laravel.com/docs/...ding-attributes-from-json) en is een Array :)
Dat was 'm inderdaad! Thanks! :)

Ik was even vergeten dat visible al gedifinieerd was.

U zegt: ‘Alles is toegestaan.’ Zeker, maar niet alles is goed. Alles is toegestaan, maar niet alles is opbouwend.