Get all relationships from Eloquent model
eloquent, laravel-4, php
Solution
To accomplish this, you will have you know the names of the methods within the model - and they can vary a lot ;)
Thoughts:
if you got a pattern in the method, like relUser / relTag, you can filter them out
or loop over all public methods, see if a `Relation` object pops up (bad idea)
you can define a `protected $relationMethods` (note: Laravel already uses `$relations`) which holds an array with method.
After calling Post->User() you will receive a `BelongsTo` or 1 of the other objects from the `Relation` family, so you can do you listing for the type of relation.
[edit: after comments]
If the models are equipped with a protected `$with = array(...);` then you are able to look into the loaded relations with `$Model->getRelations()` after a record is loaded. This is not possible when no record is loaded, since the relations aren't touched yet.
`getRelations()` is in `/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php`
But currently it doesn't show up in the api at laravel.com/api - this is because we got newer version
Problem
Having one Eloquent model, is it possible to get all its relationships and their type at runtime? I've tried taking a look at `ReflectionClass`, but I couldn't find anything useful for this scenario. For example, if we have the classic `Post` model, is there a way to extract relationships like this? ``` - belongsTo: User - belongsToMany: Tag ```