第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在數(shù)據(jù)透視表中搜索兩個(gè)用戶擁有的行

如何在數(shù)據(jù)透視表中搜索兩個(gè)用戶擁有的行

PHP
慕斯王 2022-10-14 16:06:19
對(duì)不起,如果這是一個(gè)愚蠢的問題,但我是 Laravel 的新手。我有兩個(gè)模型和一個(gè)數(shù)據(jù)透視表:用戶id | name | passwordpublic function conversations(): ?BelongsToMany{  return $this->belongsToMany(Conversation::class)->withTimestamps();}對(duì)話idpublic function users(): ?BelongsToMany{  return $this->belongsToMany(User::class)->withTimestamps();}對(duì)話用戶id | conversation_id | user_id我創(chuàng)建一個(gè)對(duì)話并為用戶分配同步,如下所示:$user->conversations()->syncWithoutDetaching($conversation);$targetUser->conversations()->syncWithoutDetaching($conversation);用戶可以有很多對(duì)話,對(duì)話可以有多個(gè)用戶。這很好,但是當(dāng)我想與兩個(gè)特定用戶進(jìn)行對(duì)話時(shí),我不知道利用 ORM 來找到他們各自所在的對(duì)話的最佳方式。我目前正在使用下一種方法,該方法有效,但感覺使用 ORM 有更好的方法:/** * Get a conversation by a target user id. * * @param int $targetUserId * @return mixed */public function getConversationByTargetUserId(int $targetUserId){    // Get the current user.    $user = Auth::guard()->user();    // Check the user exists.    if (!$user) {        throw new HttpException(500);    }    /**     * Get all pivot tables where the     * user ID is from the current user.     */    $userConversationIdsArray = DB::table('conversation_user')->where('user_id', $user->id)->pluck('conversation_id');    /**     * Get all pivot tables where the user     * id is equal to the target id, and is     * also owned by the current user. Return     * the first instance that we come across.     */    $targetConversation = DB::table('conversation_user')->where(['conversation_id' => $userConversationIdsArray, 'user_id' => $targetUserId])->first();    /**     * Return the conversation.     */    return Conversation::find($targetConversation->conversation_id);}感謝您的時(shí)間 :)
查看完整描述

2 回答

?
BIG陽

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

你沒有使用 Eloquent 有什么特別的原因嗎?它可能會(huì)讓事情變得更容易。

由于您已經(jīng)擁有用戶,因此可以這樣做。

$user->conversations()->has('users.id', '=', $targetUserId)->first();

(我沒有測(cè)試過這個(gè)解決方案,所以我不確定它是否 100% 有效)

此外,您的第一個(gè)查詢中可能存在拼寫錯(cuò)誤??赡苁菑?fù)制粘貼錯(cuò)誤,可能是錯(cuò)字。只是確保。

$userConversationIdsArray = DB::table('conversation_user')->where('user_id', $user->id)->pluck('id'); <---- 'id' shouldn't that be 'conversation_id'?


查看完整回答
反對(duì) 回復(fù) 2022-10-14
?
繁華開滿天機(jī)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊

他們讓我走上了正軌。以下方法有效:


/**

 * Get a conversation by a target user id.

 *

 * @param int $targetUserId

 * @return mixed

 */

public function getConversationByTargetUserId(int $targetUserId)

{

    // Get the current user.

    $user = Auth::guard()->user();


    // Check the user exists.

    if (!$user) {

        throw new HttpException(500);

    }


    return $user->conversations()->whereHas('users', function ($query) use ($targetUserId) {

        $query->where('users.id', $targetUserId);

    })->first();

}


查看完整回答
反對(duì) 回復(fù) 2022-10-14
  • 2 回答
  • 0 關(guān)注
  • 170 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)