XF 2.1 Sql query (finder) assistance

Improvs

Member
Hello. Is it possible to add extra select sql to xenforo Finder query?

For example, I have XF finder query like this:

$BuyerFinder = \XF::finder('MK\Store:Buyer') ->with('Thread', true) ->with('User', true) ->where('stage', 'active') ->fetch($limit, $offset);

I need to improve it with my select query:

CASE WHEN from_unixtime(action_buyed_at) <= now() - INTERVAL 2 DAY THEN action_buyed_at END as retrieve_money_allow_time_over


And at the end I'd like to ORDER BY retrieve_money_allow_time_over DESC.
So, the main question is: How to implement my 'select query' inside XF ORM query?
 
I've created getter inside Entity:
$structure->getters['retrieve_money_allow'] = ['getter' => 'getRetrieveMoneyAllow', 'cache' => true];

public function getRetrieveMoneyAllow() { $now = time(); $allowedTime = time() - 15 * 86400; if ($this->action_buyed_at <= $allowedTime) { return $this->stage_updated_at; } return false; }


Changed query:

\XF::finder('MK\Store:Buyer') ->with('Thread', true) ->with('User', true) ->where('stage', 'active') ->order('retrieve_money_allow', 'DESC') ->fetch($limit, $offset);

But getting the error: Unknown column retrieve_money_allow on MK\Store:Buyer

There is no way to order by getter?
 
Getter in entities are functions that can be called on an entity, i.e. an element retrieved from the database.
So no, you are mixing finder and entity there.

I don't think you will be able to do what you are trying through the use of finders and the associated entities hydratation.
 
Back
Top Bottom