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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel Nova indexQuery scope reuses

Laravel Nova indexQuery scope reuses

PHP
皈依舞 2022-08-05 15:28:48
我確實為我的應用程序提供了基于策略的正確管理,并且我正在使用Nova作為應用程序的后端?,F(xiàn)在一切都在nova內(nèi)部工作,我想為我的外部應用程序設置一個額外的API。我確實必須覆蓋我的大部分資源,因為用戶只能訪問有限的范圍,例如資源:indexQueryCustomerpublic static function indexQuery(NovaRequest $request, $query){    $user = Auth::user();    // Admins and office users can see all customers    if($user->authorizeRoles(['admin', 'office'])) {        return $query;    }    // A user can only see customers associated with a job they work on    $query        ->select('customers.*')        ->join('jobs', 'jobs.customer_id', '=', 'customers.id')        ->join('teams', 'jobs.team_id', '=','teams.id')        ->join('team_user', 'teams.id', '=', 'team_user.team_id')        ->where('team_user.user_id', '=', $user->id);    return $query;}現(xiàn)在對于API,我基本上需要相同的范圍,我想知道把這個代碼放在哪里。我的第一個想法是向模型添加一個作用域,所以我會添加一個帶有參數(shù)的作用域:Customer/** * Limit the results to the customers the user is able to see * @param  \Illuminate\Database\Eloquent\Builder  $query * @param \App\User $user * @return \Illuminate\Database\Eloquent\Builder */public function scopeVisibleToUser($query, $user) {    if($user->authorizeRoles(['admin', 'office'])) {        return $query;    }    // A user can only see customers associated with a job they work on    $query        ->select('customers.*')        ->join('jobs', 'jobs.customer_id', '=', 'customers.id')        ->join('teams', 'jobs.team_id', '=','teams.id')        ->join('team_user', 'teams.id', '=', 'team_user.team_id')        ->where('team_user.user_id', '=', $user->id);    return $query;}有沒有辦法在不創(chuàng)建虛擬客戶對象的情況下應用方法中的作用域?indexQueryuse App\Customer as AppCustomer;/** * Build an "index" query for the given resource. * * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request * @param  \Illuminate\Database\Eloquent\Builder  $query * @return \Illuminate\Database\Eloquent\Builder */public static function indexQuery(NovaRequest $request, $query){    $user = Auth::user();    return (new AppCustomer())->scopeVisibleToUser($query, $user);}
查看完整描述

1 回答

?
慕田峪7331174

TA貢獻1828條經(jīng)驗 獲得超13個贊

使用實時外觀,您可以將應用程序中的任何類視為外觀。


use Facades\App\Customer as AppCustomer;


/**

 * Build an "index" query for the given resource.

 *

 * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request

 * @param  \Illuminate\Database\Eloquent\Builder  $query

 * @return \Illuminate\Database\Eloquent\Builder

 */

public static function indexQuery(NovaRequest $request, $query)

{

    $user = Auth::user();

    return AppCustomer::visibleToUser($query, $user);

}


查看完整回答
反對 回復 2022-08-05
  • 1 回答
  • 0 關注
  • 81 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號