php - Change raw query join into laravel Eloquent -


i have 2 models:

$modelmain = "searchpages"; //table_name : search_pages $modelsites = "site"; // table_name : sites 

i had below query getting count 1 model $modelmain:

$records = $modelmain::         select(db::raw("count(distinct {$columnrecordedon}) records_count"))         ->groupby($columnrecordedon, $columnsiteid)         ->get(); 

now, need join 2nd model $modelsites whoese table name sites in order check status column in sites if 1.

i modified query to:

$records = $modelmain::     select(db::raw("count(distinct {$columnrecordedon}) records_count"))     ->join('sites','search_pages.site_id','=','sites.site_id') //added     ->where('sites.status','=','1') // ,     ->groupby($columnrecordedon, $columnsiteid)     ->get(); 

all working fine can see using table name sites directly in join() , in where() instead must use model name believe.

how can convert query proper laravel eloquent?

thanks help.

basically can use "with" method related model

site model

class site extends eloquent {      public function searchpages()     {     return $this->hasmany('searchpage','site_id','site_id');     }  } 

searchpage model

class searchpage extends eloquent {      public function site()     {     return $this->belongto('site','site_id','site_id');     }  } 

$records = searchpage::with('site')->get();

as per need

$records = searchpage::        select(db::raw("count(distinct {$columnrecordedon}) records_count"))     ->wherehas('site' => function($q){                                         $q->where('status','1');                                     })     ->groupby($columnrecordedon, $columnsiteid)     ->get();