1. There was an implementation before, which is to judge a specific record, whether it meets a certain complex nesting condition, and the code is implemented as follows
if ($theme['theme_installation']['type'] == ThemeInstallation::TYPE_UPDATE && ($theme['theme_installation']['processing'] || (!$theme['theme_installation']['processing'] && $theme['theme_installation']['processing_failed']))) {
$themeSaasTasks = ThemeSaasTask::whereJsonContains('theme_task_ids', $theme['theme_installation']['theme_installation_version_preset']['theme_installation_tasks'][0]['id'])->get()->toArray();
if (!empty($themeSaasTasks)) {
return true;
}
}
return false;
2. Now you need to query all records that meet this complex nesting condition, refer to:https://learnku.com/docs/laravel/6.x/queries/5171#2f5914, the code is implemented as follows
$themeInstallationIds = ThemeInstallation::select('theme_installation.id')
->join('theme_installation_task', function ($join) use ($themeTaskIds) {
$join->on('theme_installation.id', '=', 'theme_installation_task.theme_installation_id')
->where('theme_installation.type', ThemeInstallation::TYPE_UPDATE)
->where(function ($query) {
$query->where('theme_installation.processing', true)
->orWhere(function ($query) {
$query->where('theme_installation.processing', false)
->where('theme_installation.processing_failed', true);
});
})
->whereIn('theme_installation_task.id', $themeTaskIds);
})
->get();
3. The final generated SQL is in line with expectations. as shown in Figure 1

select
`theme_installation`.`id`
from
`theme_installation`
inner join `theme_installation_task` on `theme_installation`.`id` = `theme_installation_task`.`theme_installation_id`
and `theme_installation`.`type` = 3
and (
`theme_installation`.`processing` = 1
or (
`theme_installation`.`processing` = 0
and `theme_installation`.`processing_failed` = 1
)
)
and `theme_installation_task`.`id` in (
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
598,
599,
600,
613,
614,
615,
616,
617,
618
)
where
`theme_installation`.`deleted_at` is null
PHP / Laravel / Yii2 Legacy Project Maintenance & Long-Term Technical Support
If your PHP / Laravel / Yii2 project is already in production but needs bug fixing, API troubleshooting, performance optimization, developer handover support, or long-term maintenance, feel free to contact me for remote technical support.
Ideal For:
✅ PHP legacy systems without active maintenance
✅ Laravel / Yii2 project bug fixes
✅ Admin panel feature iterations
✅ RESTful API troubleshooting
✅ MySQL / Redis / Nginx performance issues
✅ Long-term remote part-time maintenance
We can start with a small task:
✅ Production error troubleshooting
✅ API issue analysis
✅ Slow query and performance bottleneck diagnosis
✅ Initial code structure review
✅ Deployment environment and log inspection
If you would like to discuss your project, please contact me and mention: PHP Maintenance Consultation.
Contact Me:
Telegram: @shuijingwan
WeChat: 13980074657
Email: shuijingwanwq@gmail.com

Leave a Reply