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

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

如何訪問(wèn)laravel中的相關(guān)表

如何訪問(wèn)laravel中的相關(guān)表

PHP
犯罪嫌疑人X 2022-12-23 13:22:55
我有一些相關(guān)的模型。Auser可以屬于許多groups,groups 可以有任意數(shù)量的siteCensuses。我想運(yùn)行一個(gè)查詢,但將結(jié)果限制為僅允許他查看的那些 siteCensus。為此,我必須知道給定id的是否在 auser的siteCensuses 列表中。模型和表格的命名是可預(yù)測(cè)的。我試圖設(shè)置這樣的關(guān)系:$user = User::first();$user->hasManyThrough('App\SiteCensus', 'App\GroupSiteCensus', 'group_id','id',,'sites_census_id')但沒(méi)有運(yùn)氣。我嘗試的另一件事是:$user->load('groups.siteCensus')這確實(shí)讓我得到了所有siteCensuses 的列表,但我不能輕易地只提取id字段來(lái)檢查成員資格。最終,我需要像這樣將它插入到模型中:Class Patient extends Model{    protected static function boot()    {        parent::boot();        static::addGlobalScope('status', function (Builder $builder) {                $site_census_ids = .......                $builder->where(function (Builder $q) use ($site_census_ids) {                    return $q->whereIn('sites_census_id', $site_census_ids);                });            });    }}一些相關(guān)代碼如下:class Group extends Model{    public function users()    {        return $this->belongsToMany("App\User");    }    public function siteCensus()    {        return $this->belongsToMany("App\SiteCensus", 'group_site_census', 'group_id', 'sites_census_id');    }}class User extends Model{    public function groups()    {        return $this->belongsToMany('App\Group');    }}class SiteCensus extends Model{    public function groups()    {        return $this->belongsToMany("App\Group");    }}
查看完整描述

2 回答

?
寶慕林4294392

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

如果我理解正確的話..你想要 $site_census_ids 用戶已經(jīng)足夠簡(jiǎn)單了:


$site_census_ids=$myUser->groups()

->join('group_site_census','group_site_census.group_id','=','groups.id')

->join('sites_census','sites_census.id','group_site_census.sites_census_id')

->select('sites_census.id')->get()->pluck('id');

請(qǐng)確保表名“sites_census”、“groups”正確


查看完整回答
反對(duì) 回復(fù) 2022-12-23
?
慕尼黑5688855

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

事實(shí)證明,laravel 實(shí)際上確實(shí)有一種簡(jiǎn)單的方法可以做到這一點(diǎn)。您可以whereHas()直接使用鏈接表。就我而言,這就是我所需要的。


        static::addGlobalScope('status', function (Builder $builder) {

                $builder->where(function (Builder $q) {

                    return $q->whereHas('siteCensus.groups.users', function ($q) {

                            $q->where('user_id', Auth::user()->id);

                        });

                });

        });


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

添加回答

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