Hi sorry for english , i try to change a developer code on a site write in lumen , im new of laravel .
This is the code :
if (!isset($_SESSION['perpage'])) {
$_SESSION['perpage'] = 500;
}
if ($request->has('limit')) {
$_SESSION['perpage'] = $request->get('limit');
}
if($_SESSION['user_permissions']==1){
$query = $newsletters = Newsletter::orderBy('id', 'DESC')
->with(['app', 'category'])
->whereHas('app', function ($query) {
$query->where('user_id', '=', $_SESSION['user_id']);
});
}
if($_SESSION['user_permissions']==7){
$query = $newsletters = Newsletter::orderBy('id', 'DESC')
->with(['app', 'category','user'])
->whereHas('app', function ($query) {
$query->where('user_id', '=', $_SESSION['user_id']);
});
/* MY CODE
*
$query = $newsletters = Newsletter::orderBy('id', 'DESC')
->join ('apps' ,'apps.id' ,'=' ,'newsletters.app_id' )
->join ('categorys' ,'categorys.id' ,'=' ,'newsletters.category_id' )
->join ('users' ,'apps.id_user' ,'=' ,'users.id' )
->where ('users.permissions' ,'=', 7)
; */
}
if ($request->has('query') && !empty($request->get('query'))) {
$query = $query->where('subject', 'LIKE', '%'.$request->get('query').'%');
}
$perpage = $_SESSION['perpage'];
$totalcount = 1000;//query->count();
$totalpages = ceil($totalcount / $perpage);
$page = $request->has('page') ? $request->get('page') : 1;
if ($page > $totalpages) {
$page = 1;
}
$query = $query->offset($perpage * ($page - 1))->take($perpage);
$newsletters = $query->get(['id', 'shared_id', 'category_id', 'strid', 'strid_nhf', 'trkid', 'trkid_nhf', 'subject', 'payout', 'status', 'created_at', 'expires_at', 'app_id', 'start_at', 'end_at', 'type', 'budget', 'budget_given', 'closelink', 'closepixel', 'cpc_amount', 'cpc_amountc', 'cpl_amount', 'cpl_amountc', 'cpa_amount', 'cpa_amountc', 'att_amount', 'att_amountc', 'trktype', 'track_name', 'tracking', 'tracking_append', 'trackready']);
//echo $sql = $query->toSql();
return view('admin_newsletters_index', [
'newsletters' => $newsletters,
'apps' => App::orderBy('name', 'ASC')->get(),
'request' => $request,
'totalpages' => $totalpages,
'page' => $page,
'perpage' => $perpage,
]);
I try to edit the query with a join to get only where the user have a permission set to 7 but dont work (the query is where i write MY CODE) .
You need to use whereHas()
->whereHas('user', function ($query) {
$query->where('permissions', '=', 7);
});
Sign in to participate in this thread!
The Laravel portal for problem solving, knowledge sharing and community building.
The community