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

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

獲取用戶標(biāo)簽的所有帖子?

獲取用戶標(biāo)簽的所有帖子?

PHP
慕田峪9158850 2023-10-21 16:35:54
我所說(shuō)的用戶標(biāo)簽是指用戶可以關(guān)注標(biāo)簽。Tagfollow 我有一個(gè)名為Tagfollow 的模型class Tagfollow extends Model{    public function user()    {        return $this->belongsTo(User::class);    }}除此之外,我還有 User、Tag 和 Post 模型,它們之間的關(guān)系如下。郵政user() belongsTo App\User tags() belongsToMany App\Tag用戶posts() hasMany App\Posttagfollow() hasMany App\Tagfollow標(biāo)簽posts() belongsToMany App\Post我不完全確定關(guān)系是否正確。我想獲取用戶關(guān)注的所有標(biāo)簽的 ID,然后獲取每個(gè)標(biāo)簽的所有帖子。這是我到目前為止的代碼。    $user = Auth::user();    $tag_ids= $user->tagfollow()->pluck('tag_id')->toArray();    $tags=Tag::whereIn('id', $tag_ids)->get();    $post_ids=[];    foreach ($tags as $tag) {        $post_ids = array_merge($post_ids, $tag->posts()->pluck('post_id')->toArray());    }    $posts =Post::whereIn('user_id', $user_ids)->whereIn('id', $post_ids)->orderby('created_at', 'desc')->paginate(20);$user_ids 是授權(quán)用戶的關(guān)注者的用戶 ID 列表。這段代碼可以工作,它只獲取其中一個(gè) whereIn 子句的帖子。必須有一種更好的方法來(lái)使用 Eloquent 來(lái)做到這一點(diǎn),比如只從用戶標(biāo)簽獲取帖子,而不是獲取標(biāo)簽 id,然后循環(huán)訪問每個(gè)標(biāo)簽。
查看完整描述

1 回答

?
撒科打諢

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

whereHas您可以在關(guān)系查詢上使用



// Get all tags id followed by user


$tagsId = $user->tagFollow()->pluck('tag_id')->toArray();


// Get all posts with corrensponding tag


$posts = Post::whereHas('tags', function ($query) use ($tagsId) {

  $query->whereIn('tags.id', $tagsId);

})->get()


查看完整回答
反對(duì) 回復(fù) 2023-10-21
  • 1 回答
  • 0 關(guān)注
  • 134 瀏覽

添加回答

舉報(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)