*/ public function get(array $condition): Collection { $table = ServiceParkingGroup::getBuilder(static::TABLE_GROUP); $table->leftJoinSub(ServiceParkingGroupRelation::getBuilder(), static::TABLE_RELATION, function (JoinClause $join) { $join->on( $this->makeColumnName([static::TABLE_GROUP, ServiceParkingGroup::COL_NAME_ID]), $this->makeColumnName([static::TABLE_RELATION, ServiceParkingGroupRelation::COL_NAME_QR_SERVICE_PARKING_GROUP_ID]) ); }); $table->leftJoinSub(Parking::getBuilder(), static::TABLE_PARKING, function (JoinClause $join) { $join->on( $this->makeColumnName([static::TABLE_RELATION, ServiceParkingGroupRelation::COL_NAME_PARKING_MANAGEMENT_CODE]), $this->makeColumnName([static::TABLE_PARKING, Parking::COL_NAME_PARKING_MANAGEMENT_CODE]) ); }); // -----検索条件 // GROUP_ID $this->where($table, $condition, static::CONDITION_QR_SERVICE_PARKING_GROUP_ID, $this->makeColumnName([static::TABLE_GROUP, ServiceParkingGroup::COL_NAME_ID])); // 名前 $name = data_get($condition, static::CONDITION_NAME); if ($name) { $table->where($this->makeColumnName([static::TABLE_GROUP, ServiceParkingGroup::COL_NAME_NAME]), 'like', "%{$name}%"); } // 駐車場管理コード $this->where($table, $condition, static::CONDITION_PARKING_MANAGEMENT_CODE, $this->makeColumnName([ static::TABLE_RELATION, ServiceParkingGroupRelation::COL_NAME_PARKING_MANAGEMENT_CODE ])); $table->select($this->columns()); $main = DB::connection("htpms_customer")->table($table, "main"); // ソート $this->sort($main, $condition); // リミット $this->limit($main, $condition); return QRServiceParkingGroupRepositoryData::makeList($main->get()); } private function columns() { $group = static::TABLE_GROUP; $relation = static::TABLE_RELATION; $parking = static::TABLE_PARKING; $columns = [ $this->makeColumnNameForSelect([$group, ServiceParkingGroup::COL_NAME_ID]), $this->makeColumnNameForSelect([$group, ServiceParkingGroup::COL_NAME_NAME]), $this->makeColumnNameForSelect([$parking, Parking::COL_NAME_PARKING_MANAGEMENT_CODE], ColumnName::PARKING_MANAGEMENT_CODE), $this->makeColumnNameForSelect([$parking, Parking::COL_NAME_PARKING_NAME], "parking_name"), ]; return $columns; } }