获取两个 Laravel 集合之间的相交行

问题描述 投票:0回答:1

我的

User
模型有一个访问器函数,它返回用户参与的所有对话。

    public function getConversationsAttribute()
    {
        $results = DB::select('SELECT * FROM conversation_user WHERE user_id = ?', [$this->id]);

        $conversations = array();

        foreach($results as $result){
            $conversation = Conversation::find($result->conversation_id);
            array_push($conversations, $conversation);
        }

        return $conversations;
    }

现在假设我有两个用户

$userA
$userB
,我如何返回两个用户都参与的对话?

$userA->conversations
$userB->conversations

之间的共同结果

我想需要一个用于重复项的

UNION
运算符。

什么是:

  1. MySQL解决方案
  2. 雄辩的解决方案
php laravel eloquent collections intersection
1个回答
1
投票

使用 Laravel Collection 的 intersect 方法,可以这样写

collect($userA->conversations)->intersect($userB->conversations);
© www.soinside.com 2019 - 2024. All rights reserved.