У меня возникли проблемы с вызовом метода отношений на модели по отражению. Мои модели:Яркое отражение модели над методом отношений
class User extends \Eloquent
{
public function city()
{
return $this->belongsTo('City', 'city_id', 'id');
}
}
class City extends \Eloquent
{
}
Когда я вызываю метод города по примеру ReflectionMethod на классе User я не получаю модель City. Я думаю, что проблема связана с отложенной загрузкой красноречива, но я не могу получить никакого света над проблемой :(Любых идей
Заранее спасибо за ответы
Update:!
Мой код отражения:..
$rc = new \ReflectionClass($model);
if ($rc->hasMethod($fieldName)) {
// This two calls below are returning: "Relationship method must return
// an object of type Illuminate\Database\Eloquent\Relations\Relation"
$relation = $rc->getMethod('getAttribute')->invoke($model, $fieldName);
$rc->getMethod($fieldName)->invoke($model);
// And this one is returning: "Property city does not exist"
$rp = $rc->getProperty($fieldName);
}
Если вам нужна дополнительная помощь, покажите мне код, в котором вы пытаетесь использовать 'ReflectionMethod' – lukasgeiter
Спасибо за ваш ответ, объяснение в связанном сообщении помогло мне понять, как это работает. Но я все еще не могу получить модель с помощью Reflection. Если я попытаюсь вызвать 'getProperty' на экземпляр' ReflectionClass', он вернет «Свойство не существует», и если я попытаюсь вызвать 'getAttribute' или непосредственно' -> city() -> get() 'over' ReflectionMethod', возвращаемая ошибка - метод отношения должен возвращать объект типа Illuminate \ Database \ Eloquent \ Relations \ Relation'. Теперь я обновлю исходный ответ с кодом отражения. – ablunier
И модель, с которой вы ее тестируете, является моделью «Пользователь» из вашего вопроса? – lukasgeiter