programing

폼이 다양한 수의 값을 반환할 수 있으며, 반환된 값을 독트린 쿼리에 사용하려고 시도합니다.

newstyles 2023. 9. 1. 20:37

폼이 다양한 수의 값을 반환할 수 있으며, 반환된 값을 독트린 쿼리에 사용하려고 시도합니다.

저는 구문 분석된 메시지를 DB에 많이 저장했고, 사용자 입력에 따라 결과를 도출할 수 있기를 원합니다.1-4개의 값(나중에 추가 옵션), 사용자 이름, ID, 이메일 또는 날짜와 시간으로 정렬하고 싶습니다.저는 다른 질문들을 하기 위해 교리를 사용해왔지만, 이번 질문은 도저히 이해할 수가 없습니다.

제 문제는 어떤 값이 메소드에 전달되는지 확인하고 그 값만 조회할 수 있는지 모르겠습니다.

예:

사용자는 사용자 이름에 "밥"을 입력하고 전자 메일 필드에 "bob@example.com "을 입력합니다.이 시나리오를 위해서는 다음과 같은 원칙이 필요합니다.

$queryBuilder
            ->select('*')
            ->from('m2m_messages')
            ->where('username = ' . $queryBuilder->createNamedParameter($params[username]))
            ->andWhere('email = ' . $queryBuilder->createNamedParameter($params[email]))
        $query = $queryBuilder->execute();

하지만 모든 복사본을 개별적으로 만들지 않고 변경했으면 합니다.ID와 이메일을 지정하려면 해당 값만 사용해야 합니다.

SQL에서 사용해야 하는 검색어만 포함된 배열을 통해 값을 전달하고 있습니다.위의 예에서는 다음과 같이 나타납니다.

$params [
    username => 'bob',
    email => 'bob@example.com'
]

메서드에 전달한 값만 자동으로 사용할 수 있는 if(isset)를 코드에 구현할 방법을 찾지 못했습니다.

제 목표는 20개 이상의 다른 sql 스크립트를 별도로 작성할 필요 없이 임의의 수의 필드에 세부 정보를 입력하고, 입력된 값을 배열로 전달하며, 이들의 모든 조합을 수락하고 sql 스크립트로 조작할 수 있는 것입니다.

이런 거?

$queryBuilder
    ->select('*')
    ->from('m2m_messages');

if (count($params) > 0) {
    $isFirst = true;
    foreach ($params as $paramKey => $paramValue) {
        if ($isFirst) {
            $queryBuilder->where(sprintf('%1$s = %2$s', $paramKey, $queryBuilder->createNamedParameter($paramValue)));
            $isFirst = false;
        } else {
            $queryBuilder->andWhere(sprintf('%1$s = %2$s', $paramKey, $queryBuilder->createNamedParameter($paramValue)));
        }
    }
}
$query = $queryBuilder->execute();

이 개념은 매개 변수를 반복하고 에서 제공된 조건을 추가하는 것입니다.$params.

언급URL : https://stackoverflow.com/questions/65531922/a-form-can-return-varying-number-of-values-trying-to-use-the-returned-values-in