通过查询重命名控制器中的表

时间:2015-05-26 21:27:46

标签: cakephp-3.0

我尝试使用发送消息的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']);

我知道我必须在包含中过滤功能,以便只让托运人或接收者不是我,但我不知道如何合并或只是重命名 '托运人'和'接收器'进入对话者'。

我所做的只是工作,顺便说一下。 我的英语不是很好,所以如果你有更好的头衔,请告诉我

感谢您的帮助

1 个答案:

答案 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');

如果有效,请告诉我......