![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/job-board.corals.io/Corals/modules/Ecommerce/DataTables/Scopes/ |
<?php namespace Corals\Modules\Ecommerce\DataTables\Scopes; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Arr; use Illuminate\Support\Str; class SKUAttributesScope { /** * @param Builder $query * @param $column * @param $value */ public function apply(Builder $query, $column, $value): void { if (!$value) return; $aliasColumn = Str::replaceArray('-', ['_'], $column); $values = join(',', Arr::wrap($value)); $whereRawValueColumn = " CASE WHEN join_attribute_$aliasColumn.type in ('checkbox', 'text','date') THEN join_option_$aliasColumn.string_value WHEN join_attribute_$aliasColumn.type in ('textarea') THEN join_option_$aliasColumn.text_value WHEN join_attribute_$aliasColumn.type in ('number','select','multi_values','radio') THEN join_option_$aliasColumn.number_value ELSE join_option_$aliasColumn.string_value END in ($values)"; $query->join("ecommerce_sku_options as join_option_$aliasColumn", 'ecommerce_sku.id', "join_option_$aliasColumn.sku_id") ->join("ecommerce_attributes as join_attribute_$aliasColumn", function ($join) use ($column, $aliasColumn) { $join->on("join_option_$aliasColumn.attribute_id", "join_attribute_$aliasColumn.id") ->where("join_attribute_$aliasColumn.code", $column); })->select('ecommerce_sku.*') ->distinct('ecommerce_sku.id') ->whereRaw($whereRawValueColumn); } }