*/ public function get(array $condition): Collection { return UseSummaryByContractRepositoryData::makeList($this->builder($condition)->get()); } protected function builder(array $condition): Builder { $builder = parent::builder($condition); // 契約名解決 $builder ->leftJoinSub(Contract::getBuilder(), static::TABLE_CONTRACT, function (JoinClause $join) { $join->on( $this->makeColumnName([static::TABLE_SUMMARY, UseByKeySummary::COL_NAME_CONTRACT_ID]), $this->makeColumnName([static::TABLE_CONTRACT, Contract::COL_NAME_ID]) ); }); $contractName = data_get($condition, self::CONDITION_CONTRACT_NAME); if ($contractName) { $builder->where($this->makeColumnName([self::TABLE_CONTRACT, Contract::COL_NAME_NAME]), 'like', '%' . $contractName . '%'); } return $builder; } protected function columns() { $contract = self::TABLE_CONTRACT; $columns = [ ...parent::columns(), SelectQueryUtil::select([$contract, Contract::COL_NAME_ID])->as("contract_id")->build(), SelectQueryUtil::select([$contract, Contract::COL_NAME_NAME])->as("contract_name")->build(), ]; return $columns; } protected function groupByColumn(): string { return ReceiptIssuingOrder::COL_NAME_CONTRACT_ID; } }