我有一个laravel项目,应该让一个人的推荐3级深。这是我的控制器及其查询。
public function matrix()
{
$referrals = DB::table('users')->where('referred_by', Auth::user()->referral_id)->get();
if (empty($referrals))
{
return view('matrix');
}
elseif(isset($referrals[0]))
{
$referrals2gen = DB::table('users')->where('referred_by', $referrals[0]->referral_id)->get();
if (!isset($referrals2gen[0]))
{
$referrals3gen = DB::table('users')->where('referred_by', $referrals2gen[0]->referral_id)->get();
if (!isset($referrals3gen[0]))
{
return view('matrix3', ['referrals' => $referrals, 'referrals2gen' => $referrals2gen]);
}
elseif(isset($referrals3gen[0]))
{
return view('matrix4', ['referrals' => $referrals, 'referrals2gen' => $referrals2gen, 'referrals3gen' => $referrals3gen]);
}
}
}
}
如果用户有引荐,则返回普通视图。如果他没有重新打开一个空白页面。将不胜感激任何帮助。 注意:我知道它不是DRY,但我是初学者,我一直有这些问题
答案 0 :(得分:0)
为什么要在控制器中查询..更容易解决问题的最佳方法是创建存储库并保持控制器清洁。 对于查询,您最好使用eloquent很简单
这是一个链接
https://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/
答案 1 :(得分:0)
在此else
if
if (!isset($referrals2gen[0]))
{
$referrals3gen = DB::table('users')->where('referred_by', $referrals2gen[0]->referral_id)->get();
if (!isset($referrals3gen[0]))
{
return view('matrix3', ['referrals' => $referrals, 'referrals2gen' => $referrals2gen]);
}
elseif(isset($referrals3gen[0]))
{
return view('matrix4', ['referrals' => $referrals, 'referrals2gen' => $referrals2gen, 'referrals3gen' => $referrals3gen]);
}
}
else
{
return view(...);
}