91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Laravel中Sight組件有什么用

發布時間:2021-03-10 14:45:56 來源:億速云 閱讀:162 作者:小新 欄目:編程語言

這篇文章主要介紹Laravel中Sight組件有什么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Laravel開發速度可以算是最快的了。但是,現在如果加上Sight,那么,你的開發速度會更加快。
Sight做了什么呢?
Sight是在Server Side實現了一個Presenter層。從而讓你把從服務器中查出的數據輕松轉換為可展示的數據。自從有了Sight,Laravel成了唯一支持Server Side的MVP模式的框架。
為什么要用Sight呢?
一、是加快開發速度。
二、國內的Phper都了解,大廠是禁止SQL聯表三個表以上的。遇到初學者,會在FOR循環中查詢數據庫。如果你禁止了,則還有可能是,他們把相關ID PLUCK出來。查出結果,然后,再FOR循環中嵌套FOR循環去查相關的關聯數據。
Sight則是提供了很好的Pluck函數,查出ID后,請求到相關數據交給Sight,Sight會為你拼接好數據。它的做法是通過關聯ID為KEY把數據整理好。從而大大提升了程序效率。
三、Sight的使用相當簡單。
比如以下示例,幾乎類似于Model的使用。

namespace App\Presenter

use Bardoqi\Sight\Presenter;
use Bardoqi\Sight\Traits\PresenterTrait;
use Bardoqi\Sight\Enums\MappingTypeEnum 
use Bardoqi\Sight\Enums\PaginateTypeEnum 
use App\Repositories\ArticleRepository;
use App\Repositories\UserRepository; 

class ArticlePresenter extents Presenter
{
   use PresenterTrait;

   public function getArticleList($where)
   {
       $articleArray = ArticleRepository::getList($where);
       $user_ids = $this->selectFields('id','title','created_at','created_by')
            ->fromLocal($articleArray,'articles')
            ->pluck('created_by');
       $users = UserRepository::getUsersWithIds($user_ids);
       $this->innerJoinForeign($users,'userss')
            ->onRelationByObject(Relation::of()
                ->localAlias('articles')
                ->localField('created_by')
                ->foreignAlias('users')
                ->foreighField('id')) 
            ->addFieldMappingByObject(FieldMapping::of()
                ->key('created_at')
                ->src('created_at')
                ->type(MappingTypeEnum::METHOD_NAME))
            ->addFieldMappingByObject(FieldMapping::of()
                ->key('created_by')
                ->src('user_name')
                ->type(MappingTypeEnum::JOIN_FIELD));         
       return $this->toPaginateArray(PaginateTypeEnum::PAGINATE_API);
   }
}

上例中,代碼則是把created_at從int轉換成了時間,把created_by從user id轉換成了用戶名。
我們看出:created_at所用的是MappingTypeEnum::METHOD_NAME,這個方法在哪里呢,是在PresenterTrait中。所以,你也可以定義自己的Trait。
created_by則是直接讀取關聯數組中的user_name,因為用的是MappingTypeEnum::JOIN_FIELD。
上面代碼看起來有些長,但是,onRelationByObject()可以改用 onRelation()傳參方式,代碼就短了。
同樣addFieldMappingByObject(),改用addFieldMappingList()用數組傳入,代碼也短了。

Sight遠遠不只是這一點功能,它不僅支持MySQL查出的數據,同時支持ElasticSearch查出的數據。
雖然是純數組操作,它一樣也有innerJoin和outerJoin,并且,有hasOne,hasMany ……
當然,還有更多的功能,這個你就要仔細看文檔了。

Sight試圖解決你查出數據后,將其轉換成可展示數據中的不爽,它做得很好,真的能讓你 Coding More Happy; Coding More Quickly!

Github 地址: https://github.com/BardoQi/Sight

Sight——殺手級提升Laravel開發速度的組件現在開源了!趕緊FORK,趕緊STAR!

以上是“Laravel中Sight組件有什么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祁阳县| 固原市| 辰溪县| 新源县| 嘉荫县| 托克逊县| 汽车| 富蕴县| 锡林浩特市| 阿图什市| 六枝特区| 安溪县| 全州县| 宝鸡市| 二连浩特市| 隆安县| 新宁县| 开平市| 青田县| 丽水市| 任丘市| 邯郸市| 中西区| 台湾省| 南城县| 和龙市| 三门县| 灵丘县| 太康县| 峨边| 彭州市| 泸溪县| 绥化市| 岐山县| 宁津县| 衡水市| 莒南县| 武宣县| 青铜峡市| 南昌市| 东丽区|