рдореБрдЭреЗ рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдПрдХ рдЪрд░ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рднреА рдРрдб-рдлреЙрд░реНрдореВрд▓рд╛ () рдФрд░ editColumn () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдХреБрдЫ рдЗрд╕ рддрд░рд╣
`` `
рд░рд┐рдЯрд░реНрди рдбреЗрдЯрд╛рдЯреИрдм :: рдХрд╛ ($ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛)
-> рд╕реЗрдЯрдЧреНрд▓реЛрдмрд▓ (рдлрд╝рдВрдХреНрд╢рди ($ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛))
$ рд╕реНрдерд┐рддрд┐ = getUserStatus ($ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-> рдЖрдИрдбреА) ;
})
-> AddColumn ('рд╕реНрдерд┐рддрд┐', рдлрд╝рдВрдХреНрд╢рди ($ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛) {
// рд░рд┐рдЯрд░реНрди getUserStatus ($ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛- рдЖрдИрдбреА);
$ рд╕реНрдерд┐рддрд┐ рд▓реМрдЯрд╛рдПрдВ;
};
-> EditColumn ('is_approved', function ($ user) {
// рд░рд┐рдЯрд░реНрди getUserStatus ($ user-> id)? рд╕рд╣реА рдЧрд▓рдд;
рд╡рд╛рдкрд╕реА ($ рд╕реНрдерд┐рддрд┐)? рд╕рд╣реА рдЧрд▓рдд;
so, each time I don't need to call this **getUserStatus($user->id)** function.
<!--
If applicable, please include a copy of your code
which triggers the suspected bug.
You may use the markdown php code tags to format your paste:
```php
$params = ['foo'];
->
рд╡реИрд╢реНрд╡рд┐рдХ? рдмрд╕ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдЪрд░ рдкрд╛рд╕?
$status = getUserStatus($user->id);
return Datatables::of($users)
->addColumn('status', function ($user) use ($status) {
return $status;
});
рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рдП
рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
return Datatables::of($users)
->setGlobal(function ($user){
//for $user->id = 1 //status = true
//for $user->id = 2 // status = false
**$status** = **getUserStatus($user->id)**;
})
->addColumn('status', function ($user) {
// return getUserStatus($user->id);
return $status;
});
->editColumn('is_approved', function ($user) {
//return getUserStatus($user->id) ? true : false;
return ($status) ? true : false;
рдХреГрдкрдпрд╛ рдбреЗрд╡рд▓рдкрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрдВрдж рди рдХрд░реЗрдВред
рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╣реАрдВ рд╣реИред
->addColumn('status', function ($user) {
return getUserStatus($user->id);
});
->addColumn('status', function ($user) {
return getUserStatus($user->id);
})
->editColumn('xyz', function ($user) {
return getUserStatus($user->id);
});
рдкреНрд░рддреНрдпреЗрдХ рдРрдб рдпрд╛ рдПрдбрд┐рдЯ рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЙрд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЬреЛ MySql рдХреНрд╡реЗрд░реА рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЙрд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ 5 рдХреЙрд▓рдо рд╣реИрдВ рддреЛ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ 5 рдмрд╛рд░ рдХреЗ рд▓рд┐рдП MySql рдХреНрд╡реЗрд░реА рдХреЙрд▓ рдФрд░ 1000 рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдпрд╣ 1000 * 5 = 5000 рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреНрд╡реЗрд░реА рд╣реЛрдЧреАред
рдпрджрд┐ рдореИрдВ рдкреЗрдЬрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдиреНрдпреВрдирддрдо 20 рд░рд┐рдХреЙрд░реНрдб 20 * 5 = 100 рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рднреАред
рдпрджрд┐ рдЖрдк N + 1 рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЙрддреНрд╕реБрдХ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рд░реЗрдлрд░реА рдХреЗ рд▓рд┐рдП рдпрд╣ рдбреЗрдореЛ рджреЗрдЦреЗрдВ: https://datatables.yajrabox.com/relation/belongs-to
рдпрд╛ рдЬреНрд╡рд╛рдЗрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреА рдХреНрд╡реЗрд░реА рдореЗрдВ рд╕реНрдерд┐рддрд┐ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред
$assignments = DB::table('assignments as a')
->when($round_id != "" || $round_id != NULL, function ($query) use ($round_id) {
return $query->where('a.round_id', '=', $round_id);
})
->leftJoin('rounds as r', 'a.round_id', '=', 'r.id')
->leftJoin('surveys as su', 'a.id', '=', 'su.assignment_id')
->leftJoin('projects as p', 'r.project_id', '=', 'p.id')
->leftJoin('sites as s', 'a.site_id', '=', 's.id')
->leftJoin('fieldreps as f', 'a.fieldrep_id', '=', 'f.id')
->leftJoin('chains as ch','p.chain_id','=','ch.id')
->leftJoin('clients as c','ch.client_id','=','c.id')
->when(is_string($status) && $status != "", function ($query) use ($status, $current_date) {
if($status == 'late'){
return $query->where(function ($query) use ($current_date) {
$query->where(function ($query) {
$query->where(DB::raw('IFNULL( DATE_FORMAT(a.deadline_date,"%Y-%c-%e"), DATE_FORMAT(r.deadline_date,"%Y-%c-%e"))'), '<', DB::raw('CURDATE()'));
})
->where(function ($query) use ($current_date) {
$query->where('a.is_scheduled', '=', true)
->where('a.is_reported', '=', false)
->where('a.is_partial', '=', false);
});
});
}else if($status == 'scheduled'){
return $query->where(function ($query) use ($current_date) {
$query->where(function ($query) {
$query->where(DB::raw('IFNULL( DATE_FORMAT(a.deadline_date,"%Y-%c-%e"), DATE_FORMAT(r.deadline_date,"%Y-%c-%e"))'), '>=', DB::raw('CURDATE()'));
})
->where(function ($query) use ($current_date) {
$query->where('a.is_scheduled', '=', true)
->where('a.is_reported', '=', false)
->where('a.is_partial', '=', false);
});
});
}
else if($status == 'pending'){
return $query->leftJoin('assignments_offers as ao', function($join)
{
$join->on('a.id', '=', 'ao.assignment_id');
})
->where('a.is_scheduled', '=', false)
->where(DB::raw('(SELECT count(id) as offer_count FROM assignments_offers where assignment_id = a.id and is_accepted is null)'), '<=', '0')
->groupBy('a.id');
}else if($status == 'offered'){
return $query->leftJoin('assignments_offers as ao', function($join)
{
$join->on('a.id', '=', 'ao.assignment_id');
})
->where(['a.is_scheduled' => false, 'a.is_offered' => true])->where(['ao.is_accepted' => NULL])
->groupBy('ao.assignment_id');
}else if($status == 'reported'){
return $query->where(['a.is_reported' => true, 'is_approved' => false]);
}else if($status == 'partial'){
return $query->where('a.is_partial', true);
}else if($status == 'completed' || $status == 'approved'){
return $query->where('a.is_approved', true);
}
})
->select([
'a.id',
'a.fieldrep_id',
'a.deadline_date',
'a.is_scheduled',
'a.is_reported',
'a.is_partial',
'a.is_offered',
'a.is_approved',
'c.client_logo',
'p.id as project_id',
'p.project_name',
'r.id as round_id',
'r.round_name',
's.site_code',
's.site_name',
's.city',
's.state',
's.zipcode',
'su.id as survey_id',
DB::raw("CONCAT(IFNULL( DATE_FORMAT(a.schedule_date,'%d %b %Y'), DATE_FORMAT(r.schedule_date,'%d %b %Y')), ' ' , IFNULL(TIME_FORMAT(a.start_time, '%h:%i %p'), TIME_FORMAT(r.start_time,'%h:%i %p'))) as assignment_scheduled"),
DB::raw("CONCAT(IFNULL( DATE_FORMAT(a.deadline_date,'%d %b %Y'), DATE_FORMAT(r.deadline_date,'%d %b %Y')), ' ' , IFNULL(TIME_FORMAT(a.start_time, '%h:%i %p'), TIME_FORMAT(r.deadline_time,'%h:%i %p'))) as assignment_end"),
DB::raw('CONCAT(f.first_name," ",f.last_name) as schedule_to'),
DB::raw('(select COUNT(id) as offer_count from assignments_offers where assignment_id = a.id and is_accepted is null group by assignment_id) as offer_count'),
]);
рдкреНрд░рд╢реНрди рдпрд╣ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИред рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрддреНрд╕реБрдХ рд▓реЛрдбрд┐рдВрдЧ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛
рдХреЙрд▓рдо рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП getXYZ рдФрд░ setXYZ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╡рд╕реНрддреБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдареАрдХ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдХреНрд╡реЗрд░реА рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереАред ^ _ ^
рддрдм рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрджрд┐ рд╕реНрдерд┐рддрд┐ рдмрд╣реБрдд рдмрд╛рд░ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реЗрдЯ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ -
рд╢рд╛рдпрдж рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
`` `php
рдлрд╝рдВрдХреНрд╢рди getUserStatus ($ id) {
рд╡рд╛рдкрд╕реА рдХреИрд╢ :: рдпрд╛рдж рд░рдЦреЗрдВ ('user.statusред' $ id, 1, function ($ id) {
рд╡рд╛рдкрд╕реА рд╕реНрдерд┐рддрд┐ :: рдЦреЛрдЬ ($ рдЖрдИрдбреА);
};
}
->setGlobal(function ($user){
//for $user->id = 1 //status = true
//for $user->id = 2 // status = false
$status = getUserStatus($user->id);
})
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рд╣реЛрдЧрд╛
рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ setGlobal
рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЕрднреА рднреА рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рдЗрд╕рд▓рд┐рдП рдХрдИ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдЕрднреА рднреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ 100s рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рд╕реНрддрд╛ рддрд▓рд╛рд╢рддрд╛ рд╣реВрдВред рд╕рд┐рд░реНрдл рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреЙрд▓рдо рдореЗрдВ getXYZ рдФрд░ setXYZ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдгред
рдореЗрд░реЗ рдкрд╛рд╕ рднреА рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ (рд╕рд╛рдорд╛рдиреНрдп) рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреВрдВ
@ruchisheth рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреБрдЫ рдорд┐рд▓рд╛ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдЙрддреНрддрд░ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж.. :)
рд╡рд╣реА @ruchisheth
@rajanjain рдФрд░ @haratmalli рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╣рд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред
рдирдорд╕реНрддреЗ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдереА
data-> рдореВрд░реНрддрд┐рдпрд╛рдБ = 4;
рджреВрд╕рд░реЗ рдХреЙрд▓рдмреИрдХ рдкрд░ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╡реИрд╢реНрд╡рд┐рдХ? рдмрд╕ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдЪрд░ рдкрд╛рд╕?