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

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

通過 user_id 獲取 Lighthouse GraphQL 數(shù)據(jù)所有權(quán)

通過 user_id 獲取 Lighthouse GraphQL 數(shù)據(jù)所有權(quán)

PHP
猛跑小豬 2023-10-22 21:13:37
我有一個(gè)允許多個(gè)用戶的應(yīng)用程序。每個(gè)用戶之間完全隔離;這意味著數(shù)據(jù)庫中所有非用戶的內(nèi)容都有一個(gè)user_id列,并且只有登錄用戶才可以查看、更新或刪除它們。此外,用戶不能使用其他人的 user_id 創(chuàng)建行。有沒有內(nèi)置的方法可以用 Lumen/Lighthouse 來解決這個(gè)問題?這是我所做的,它有效,但我想知道我是否重新發(fā)明了輪子:每個(gè)模型都有一個(gè)user關(guān)系,如下所示:public function user(): BelongsTo{    return $this->belongsTo(User::class);}我在這些模型中添加了一個(gè)HasOwnerTrait,其中包含以下內(nèi)容:public static function boot(){    parent::boot();    static::creating(function (Model $model) {        $model->user_id = Auth::user()->id;    });    static::saving(function (Model $model) {        if ($model->user_id !== Auth::user()->id) {            $exception = new ModelNotFoundException();            $exception->setModel(self::class, $model->id);            throw $exception;        }    });    static::deleting(function (Model $model) {        if ($model->user_id !== Auth::user()->id) {            $exception = new ModelNotFoundException();            $exception->setModel(self::class, $model->id);            throw $exception;        }    });}public function scopeIsOwner($query){    return $query->where('user_id', Auth::user()->id);}最后,在我的模式定義中:type Query {    recipes: [Recipe!]! @all(scopes: ["isOwner"])}type Mutation {    createRecipe(input: CreateRecipeInput! @spread): Recipe @create    updateRecipe(id: ID!, input: UpdateRecipeInput! @spread): Recipe @update    deleteRecipe(id: ID!): Recipe @delete}同樣,這是可行的,但是是否需要像這樣臨時(shí)使用,或者是否有更好的方法?
查看完整描述

1 回答

?
拉風(fēng)的咖菲貓

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

我認(rèn)為你的解決方案很好,它節(jié)省了編寫一大堆樣板文件。一些小建議:

boot您可以將方法重命名為 ,從而使您的特征成為可引導(dǎo)特征,由框架自動(dòng)調(diào)用bootHasOwnerTrait

也許可以考慮isOwner默認(rèn)將作用域設(shè)置為活動(dòng)狀態(tài)。在 Laravel 中,這被容易混淆地稱為全局作用域。這允許您省略顯式命名范圍,但如果您有一些不應(yīng)應(yīng)用的查詢(例如統(tǒng)計(jì)信息),您仍然可以省略它。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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