문제

가상의 상황. 채찍/로드하고 싶습니다 sales/order grand_total이 total_paid. 나는 내가 사용할 수 있다는 것을 안다 addFieldToFilter 특정 값으로 필터링하려면이 방법을 사용하여 다른 데이터베이스 값으로 필터링 할 수 있습니다. 그렇지 않은 경우 Magento 시스템에이를 허용하는 데이터 액세스 오브젝트가 있습니까?

$orders = Mage::getModel('sales/order');
$orders = $orders->getCollection();
$orders->addFieldToFilter('total_paid',Array('eq'=>30));  //would find all the orders that were 30 
//syntax to find all the orders whose total_paid value is equal to it's grand_total attribute
//????????

그만큼 non-eav 내가 이해하고있는 SQL 개념은 다음과 같습니다.

SELECT * FROM Orders o WHERE o.total_paid = o.grand_total

객체 메소드 호출을 순전히 수행 할 수 있습니까? 아니면로드 후 필터링을 수행해야합니까?

다른 방법 ORM 시스템이 이것을 처리합니까?

도움이 되었습니까?

해결책

나는 이것에 대한 명확한 대답을 기다리고 있었지만 아무것도 일어나지 않을 때 나는 내가 찾은 것을 공유 할 수도 있습니다. 나는 AddfieldTofilter를 추적했고 분명히 당신이 사용하는 모든 값은 인용되므로 열의 이름을 사용하여 이것을 "해킹"할 수는 없습니다. 사실 나는 적어도이 수업 내에서는이 작업을 수행 할 수있는 방법을 보지 못합니다.

현실적으로 적어도 지금은로드 후 필터링과 함께 가야한다고 생각합니다. 물론 이것은 비효율적 인 코드의 정의이지만, 다시 계산 효율성이 우선 순위라면 처음에는 Magento를 사용하지 않을 것입니다 ...

다른 팁

내 프로젝트 중 하나 에서이 문제를 해결해야했고 더 나은 해결책을 찾는 동안이 질문을 발견했습니다. 내 해킹은 다음과 같습니다.

$orders = Mage::getModel('sales/order')->getCollection();
$orders->getSelect()
       ->where('total_paid=grand_total');

데이터베이스의 기본 기능이 Magento의 ORM에 의해 간과된다는 것이 짜증납니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top