Is it possible to have ONE relation which can match on two foreign keys using an OR condition?
For example I have a table called "messages" with two foreign keys - "from_user_id" and "to_user_id". I want to retrieve all messages "from" and "to" current user.
'messages'=>array(self::HAS_MANY, 'MessageThread', 'from_user_id, to_user_id'),
This creates an AND condition on the foreign key relation. How can I make it perform OR condition?
Try It Now
'messages'=>array(self::HAS_MANY, 'MessageThread', 'from_user_id')
'messages2'=>array(self::HAS_MANY, 'MessageThread', 'to_user_id')
$criteria->condition = 'from_user_id = :temp OR to_user_id = :temp ';
As suggested above, you should probably have two different relations, perhaps called messagesSent and messagesReceived.
No worries. I was hoping it could all be done in one relation.
In the end I’ve just created a new function that does a normal CDbCriteria query to retrieve both sent and received.