Support the ongoing development of Laravel.io →
posted 4 years ago
Database

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) .

Last updated 3 years ago.
0

You need to use whereHas()

        ->whereHas('user', function ($query) {
            $query->where('permissions', '=', 7);
        });
Last updated 4 years ago.
0

Sign in to participate in this thread!

PHPverse

Your banner here too?

Moderators

We'd like to thank these amazing companies for supporting us

Your logo here?

Laravel.io

The Laravel portal for problem solving, knowledge sharing and community building.

© 2025 Laravel.io - All rights reserved.