我尝试使用发送消息的user_id和在表中接收消息的post_id来执行私人消息应用程序。
我在桌子上做了这样的关联:
$this->belongsTo('receiver', [
'className' => 'Users',
'foreignKey' => 'post_id'
]);
$this->belongsTo('shipper', [
'className' => 'Users',
'foreignKey' => 'user_id'
]);
但现在我需要合并这些以获得一个对话者'在我的请求中:
$messages = $this->Messages->find()->where(['post_id =' => $id])
->orWhere(['user_id =' => $id])->contain(['shipper','receiver']);
我知道我必须在包含中过滤功能,以便只让托运人或接收者不是我,但我不知道如何合并或只是重命名 '托运人'和'接收器'进入对话者'。
我所做的只是工作,顺便说一下。 我的英语不是很好,所以如果你有更好的头衔,请告诉我
感谢您的帮助
答案 0 :(得分:0)
我想你需要像http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#custom-finder-methods
这样的东西示例:
public function findInterlocutor(Query $query, array $options)
{
$query->contain(['shipper','receiver']);
return $query;
}
这样称呼:
$messages = $this->Messages->find()->where(['post_id =' => $id])
->orWhere(['user_id =' => $id])->find('interlocutor');
如果有效,请告诉我......