laravel-admin模型表格和詳情展示關聯數據

最近整一個後臺管理系統,遇到這麼個問題:需要在一個model的grid()和detail()方法中展示另一個model中的某個字段,但是隻存了主鍵id,沒存這個字段本身。

之前也遇到過這種問題,也解決了,但總覺得不夠優雅。之前代碼如下這種:

$grid->column('來源')->display(function() {
            $user_info = User::where(['id' => $this->user_id])->first();
            if ($user_info) {
                $user_info = $user_info->toArray();
            }
            return isset($user_info['source']) ? $user_info['source'] : "";
        });

思路很明確,但很繁瑣。事實上可以在需要展示的model中定義一個user()方法,關聯兩個model:

public function user()
{
        return $this->belongsTo(User::class, 'user_id');
}

然後在對應的grid()方法中這麼寫就可以了:

$grid->column('user.source', __('來源'));

注意,這裏的user一定要和model中定義的user()方法名對應。同樣,如果是在detail()方法中展示,可以這樣:

$show->user('來源')->as(function ($user) {
            return $user->source;
        });

相比之前的版本,現在這個看起來就簡潔很多了。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章