i have a laravel project that's supposed to get a person's referral 3 levels deep. Here is my controller with its query.
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]);
}
}
}
}
if a user has referrals it returns the normal view. If he doesnt it retruns a blank page. Will appreciate any help whatsover. NOTE: i know its not DRY but am a beginner and i have been having issues with these for a while
Why are you querying in a controller.. The best way to solve your problem easier is to create a repository and leave the controller clean. And for the query you better use eloquent is simple
Here is a link
https://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/
Add else
after this 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(...);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.