Laravel 4:公共函数根据哪个控制器调用它返回空数据或模型数据?
Posted
技术标签:
【中文标题】Laravel 4:公共函数根据哪个控制器调用它返回空数据或模型数据?【英文标题】:Laravel 4: public function returns empty or model data depending on which controller calls it? 【发布时间】:2014-11-02 06:50:36 【问题描述】:我有一个带有关联表“user_profiles”的 UserProfile 模型,其中包含一些字段,例如“name”、“user_id”、“contact”。在模型中,有一个函数可以使用 Eloquent ORM 检索此数据,并在返回配置文件对象之前为其添加一个附加属性“省”。
class UserProfile extends Eloquent
//....preceding methods ommitted
public function totalProfile($userid)
$profile = $this->find($userid);
$profile->provinces = Province::all();
return $profile;
当我从 UserProfilesController 调用上述函数时,它会毫无问题地返回配置文件,但是当我尝试从 PagesController 调用该方法时,它只会返回空,如下所示:
class PagesController extends \BaseController
public function __contstruct(UserProfile $userProfile)
$this->userProfile = $userProfile;
public function show($id)
print_r($this->userProfile->totalProfile($id)); //prints nothing
die;
如果有人能帮助解释这是为什么,我将不胜感激?非常感谢!
【问题讨论】:
必须查看整个代码。你有正确的使用说明吗? this->userProfile 中有什么? 【参考方案1】:我不确定您为什么认为这属于您的模型,但如果您这样做,请使用:
型号:
class UserProfile extends Eloquent
protected $appends = ['provinces'];
public function getProvincesAttribute()
return Province::all();
控制器:
class PagesController extends \BaseController
public function __contstruct(UserProfile $userProfile)
$this->userProfile = $userProfile;
public function show($id)
return Response::json($this->userProfile->find($id));
【讨论】:
感谢您的建议,我不知道将访问器附加到模型。看了你的帖子,发现this additional post on the subject。 我明白你关于将它添加到模型中的意思,实际上我不想添加它,我只想将数据附加到它,以便我可以将省份返回到视图中为方便起见,相同的对象,因为模型包含地区而不是省,我也想显示省并将重新考虑这一点。但我认为我的问题出在其他地方,因为在我添加省份之前似乎就存在问题。如果我从另一个控制器访问它,也许它与在方法中使用 $this->find($id) 有关?以上是关于Laravel 4:公共函数根据哪个控制器调用它返回空数据或模型数据?的主要内容,如果未能解决你的问题,请参考以下文章
laravel 4持续数据正在进行 - jquery ajax提交