以下是我的函数,用于加载用户创建的提交。
public function viewSubs()
{
$user = User::find(Input::get('id'));
$submissions = Submission::find($user)->sortByDesc('created_at');
$submissions->load('user')->load('votes')->load('suggestions.votes');
return view('submissions.index' , compact('submissions'));
}
返回错误
调用空上的成员函数load()
当提交的文件中没有记录时。
如果数据库上没有提交,该如何处理?
只需检查其null
是否首先使用if语句:
public function viewSubs()
{
$user = User::find(Input::get('id'));
if ($submissions = Submission::find($user)->sortByDesc('created_at')) {
$submissions->load('user')->load('votes')->load('suggestions.votes');
}
return view('submissions.index' , compact('submissions'));
}
此外,根据您的数据库结构,我确信您可以通过使用模型的关系来裁剪大量代码,方法如下:
$user = User::find(Input::get('id'))
->with(['submissions' => function($query) {
$query->orderBy('created_at', 'asc');
}, 'submissions.votes', 'submissions.suggestions.votes']);
然后将$user
变量传递到视图,或:
$submissions = Submission::with('user', 'votes', 'suggestions.votes')
->where('user_id', Input::get('id'))
->sortByDesc('created_at')
->first();
不完全确定代码是否能完美工作,但我相信你可以调整它。关键是,通过使用你已经建立的关系,你的代码可以更短,更可读。