在我們日常程式碼開發中,最常見的功能就是列表篩選了。通過不同的引數,返回符合條件的內容。
在網上也看到不少各種包,寫法大同小異,感覺比較繁瑣,於是自己寫了一個。
下面分享一個擴充套件包。
composer require james.xue/laravel-eloquent-filter
TestFilter
搜尋預設資料庫欄位
public function code($code)
{
return $this->builder->where('code', $code);
}
public function name()
{
$this->builder->where('name', 'like', "%測試%");
}
public function mobile($mobile)
{
$mobile ? $this->builder->where('mobile', $mobile) : $this->builder;
}
一對多
public function title($title)
{
return $this->builder->whereHas('goods', function($q) use ($title){
return $q->where('title', 'like', "%{$title}%");
});
}
Controller、通過 url 篩選條件預設方法可以不寫,預設搜尋條件為 where($column, $keywords)
// http://baby.com/api/city?code=54526481&title=菁華粉底液(片裝1.5mll)
public function index(TestFilter $testfilter)
{
Test::filter($testfilter)->get();
// Or $testfilter 可以省略,預設載入 `模型 + Filter`
Test::filter()->get();
// 支援固定篩選
Test::filter($testfilter, 'name')->get();
// Or
Test::filter($testfilter, ['name'])->get();
// 支援固定篩選帶引數
$mobile = "185513215";
Test::filter($testfilter, ['mobile:'.$mobile])->get();
// 支援自定義篩選方式,example:<>、like等
$mobile = "185513215";
Test::filter($testfilter, ['mobile:'.$mobile."|<>"])->get();
}
擴充套件包肯定還有不足之處,最後歡迎各位 PR 以帶來更好的功能
GitHub:github.com/xiaoxuan6/laravel-eloqu...
本作品採用《CC 協議》,轉載必須註明作者和本文連結