*/ public function get(array $condition): Collection { $table = ShopNoRelation::getBuilder(static::TABLE_RELATION); $table->leftJoinSub(CertificationAvailableSetting::getBuilder(), static::TABLE_SETTING, function (JoinClause $join) { $join->on( $this->makeColumnName([static::TABLE_RELATION, ShopNoRelation::COL_NAME_PARKING_MANAGEMENT_CODE]), $this->makeColumnName([static::TABLE_SETTING, CertificationAvailableSetting::COL_NAME_PARKING_MANAGEMENT_CODE]) ); }); $table->leftJoinSub(Parking::getBuilder(), static::TABLE_PARKING, function (JoinClause $join) { $join->on( $this->makeColumnName([static::TABLE_RELATION, ShopNoRelation::COL_NAME_PARKING_MANAGEMENT_CODE]), $this->makeColumnName([static::TABLE_PARKING, Parking::COL_NAME_PARKING_MANAGEMENT_CODE]) ); }); // -----検索条件 // GROUP_ID $this->where($table, $condition, static::CONDITION_SHOP_ID, $this->makeColumnName([static::TABLE_RELATION, ShopNoRelation::COL_NAME_SHOP_ID])); $table->select($this->columns()); $table->orderBy($this->makeColumnName([self::TABLE_PARKING, Parking::COL_NAME_PARKING_MANAGEMENT_CODE])); $table->orderBy($this->makeColumnName([self::TABLE_SETTING, CertificationAvailableSetting::COL_NAME_DISCOUNT_TICKET_CODE])); $main = DB::connection("htpms_customer")->table($table, "main"); // ソート $this->sort($main, $condition); // リミット $this->limit($main, $condition); return CertificationAvailableSettingRepositoryData::makeList($main->get()); } private function columns() { $setting = static::TABLE_SETTING; $relation = static::TABLE_RELATION; $parking = static::TABLE_PARKING; $columns = [ $this->makeColumnNameForSelect([$relation, ShopNoRelation::COL_NAME_SHOP_ID]), $this->makeColumnNameForSelect([$relation, ShopNoRelation::COL_NAME_PARKING_MANAGEMENT_CODE]), $this->makeColumnNameForSelect([$relation, ShopNoRelation::COL_NAME_SHOP_NO]), $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_DISCOUNT_TICKET_CODE]), $this->makeColumnNameForSelect([$parking, Parking::COL_NAME_PARKING_NAME], "parking_name"), ]; return $columns; } }