Im возникли проблемы при создании полиморфного отношения между двумя моделями:Полиморфные отношения в Laravel 4 - morphOne()
- Загрузить
- Группа
Упрощенная версия Group Модель:
use Cartalyst\Sentry\Groups\Eloquent\Group as SentryGroupModel;
class Group extends SentryGroupModel {
...
/**
* returns the logo (upload model) from this agency
*
* @return Upload
*/
public function logo()
{
return $this->morphOne('Upload', 'uploadable', 'model_type', 'model_id');
}
...
}
Упрощенная версия Загрузить модели
class Upload extends Eloquent {
...
/**
* returns the polymorphic relationship
*
* @return Upload
*/
public function uploadable()
{
return $this->morphTo('uploadable', 'model_type', 'model_id');
}
...
}
Как вы можете видеть модель Group на самом деле расширенная модель Sentry 2 Group, которая является стажером расширенная Eloquent модель.
При вызове отношения в контроллере, как например:
$agencyGroup->logo->saveUpload('logo');
я получаю ошибку PHP:
Call to a member function saveUpload() on a non-object
Любая помощь с этим?
try $ agencyGroup-> logo() -> saveUpload ('logo'); – Laurence
Вы подтвердили, что '$ agencyGroup' имеет' Upload' в базе данных? Кажется, что вы вызываете '$ agencyGroup-> логотип', который возвращает' NULL', а затем вызывает 'NULL-> saveUpload ('logo')'. – vFragosop
если у меня есть '$ agencyGRoup-> logo()' он возвращает экземпляр 'Illuminate \ Database \ Eloquent \ Relations \ MorphOne', хотя, если я пытаюсь' $ agencyGRoup-> logo() -> saveUpload ('logo') ' я получаю другую ошибку до: 'Call to undefined method Illuminate \ Database \ Query \ Builder :: saveUpload()' – AndrewMcLagan