*/ public function get(array $condition): Collection { $table = User::getBuilder(static::TABLE_USER); $table->leftJoinSub(MstCustomer::getBuilder(), static::TABLE_CUSTOMER, function (JoinClause $join) { $join->on( $this->makeColumnName([static::TABLE_USER, User::COL_NAME_CUSTOMER_CODE]), $this->makeColumnName([static::TABLE_CUSTOMER, MstCustomer::COL_NAME_CUSTOMER_ID]) ); }); // -----検索条件 // ID $this->where($table, $condition, static::CONDITION_ID, $this->makeColumnName([static::TABLE_USER, User::COL_NAME_ID])); // 名前 $name = data_get($condition, static::CONDITION_NAME); if ($name) { $table->where($this->makeColumnName([static::TABLE_USER, User::COL_NAME_NAME]), 'like', "%{$name}%"); } // EMAIL $email = data_get($condition, static::CONDITION_EMAIL); if ($email) { $table->where($this->makeColumnName([static::TABLE_USER, User::COL_NAME_EMAIL]), 'like', "%{$email}%"); } // ROLE $this->where($table, $condition, static::CONDITION_ROLE, $this->makeColumnName([static::TABLE_USER, User::COL_NAME_ROLE])); $table->select($this->columns()); $main = DB::connection("htpms")->table($table, "main"); // ソート $this->sort($main, $condition); $main->orderBy(static::CONDITION_ID); // リミット $this->limit($main, $condition); return LoginUserRepositoryData::makeList($main->get()); } private function columns() { $user = static::TABLE_USER; $customer = static::TABLE_CUSTOMER; $columns = [ $this->makeColumnNameForSelect([$user, User::COL_NAME_ID]), $this->makeColumnNameForSelect([$user, User::COL_NAME_NAME]), $this->makeColumnNameForSelect([$user, User::COL_NAME_EMAIL]), $this->makeColumnNameForSelect([$user, User::COL_NAME_CUSTOMER_CODE]), $this->makeColumnNameForSelect([$customer, MstCustomer::COL_NAME_CUSTOMER_NAME]), ]; return $columns; } }