Я загружаю некоторые данные в модель Eloquent с помощью прилагаемого атрибута, а атрибут возвращенной модели всегда равен нулю. Я protected $appends = array('survey_status);
определен в моей модели (названной Survey
), и аксессор определены как таковые:
public function getSurveyStatusAttribute($value){
return $value;
}
Я попытался установить атрибут как в качестве свойства и обозначений квадратных скобок ($this->survey_status = ... & $this->attributes['survey_status'] = ..)
, а также попытался с помощью метода setAppends()
. до возвращения модели, все безрезультатно
об этом сообщается на форумах Laravel назад в конце сентября 2013 года и сообщил, как зафиксировано, что октябрь (см: https://github.com/laravel/framework/issues/2336 и http://laravel.io/forum/02-26-2014-model-attribute-accessor-not-working-with-object-get-helper-function)
Я на самом t версии Laravel 4 (v4.2.17), которая была выпущена в феврале этого года. И из того, что я читал в документах и в других местах, кажется, как будто я делаю все правильно. Может ли кто-нибудь увидеть что-то, чего я не делаю, или подтвердить, что это все еще проблема?
UPDATE
Так что я думаю, что я понял, 75% моего вопроса. Я не знал, что вы можете передать массив в $ model-> load(), чтобы создавать сложные запросы, используя where/orWhere/etc. Так что этот базовый пример работает:
$survey = Survey::find(168);
$survey->load(array('surveyStatus' => function ($q){
$q->where('organization_id', '=', 7485);
}));
return Response::json($survey);
В ответе представлена моя модель SurveyStatus. Моя проблема теперь заключается в том, что я пытаюсь выполнить итерацию коллекции моделей Survey, чтобы добавить отношение SurveyStatus так же, как и рабочий выше, но атрибута нет в ответе. Это то, что я использую для перебора коллекции:
$org->surveySets->each(function ($ss) use ($id){
$fye = $ss->fiscal_year_end;
$ss->surveys->each(function ($survey) use ($id, $fye){
$sid = $survey->id;
$survey->load(array('surveyStatus' => function ($q) use($id, $fye){
$q->where('organization_id', '=', $id)->where('fiscal_year_end', '=', $fye);
}));
$survey->content_groups->each(function ($cg) use ($id, $sid, $fye){
$cg->content_rows->each(function ($cr) use ($id, $sid, $fye){
$cr->questions->each(function ($q) use ($id, $sid, $fye){
// do the same thing as surveyStatus but load surveyData relation into question
});
});
});
});
});
Есть ли какая-то причина нагрузка не «палки», когда итерации по коллекции?
Ах, я вижу. Я не понимал, как он используется. Тем не менее, есть ли способ вернуть дополнительные данные в модель, о которой вы знаете? – Joe
Несомненно, можете ли вы привести пример того, что вы подразумеваете под «дополнительными данными»? Откуда вы получаете свой статус опроса? –
survey_status - отдельная модель, но она зависит от пары других значений, чтобы получить один конкретный экземпляр модели. см. мое обновление выше для получения дополнительной информации – Joe