背景:使用過 THINKPHP 的 PHPer 都知道有欄位排除功能,個人覺得有時候還是比較好用的,所以分享一下!第一次分享,如有不好之處,請大神指教
這裡面主要是使用到 laravel 裡面的 Macros;
1、在 app\Providers 裡面新建一個 QueryMacroServiceProvider 的類
溫馨提示:這裡面有一個小坑,
\Illuminate\Database\Query\Builder 適合用於DB,Illuminate\Database\Eloquent\Builder 適合用於ORM
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\ServiceProvider;
class QueryMacroServiceProvider extends ServiceProvider
{
public function boot()
{
Builder::macro('selectNotField', function ($columns = ['*']) {
$columns = is_array($columns) ? $columns : func_get_args();
$filed = array_diff($this->model->getFillable(), $columns);
return $this->select($filed);
});
}
}
2、 config 裡面的 app.php 檔案,在providers 進行註冊
'providers' => [
......
App\Providers\QueryMacroServiceProvider::class,
3、使用selectNotFiled查詢
$result = self::selectNotField('status','name')->get();
本作品採用《CC 協議》,轉載必須註明作者和本文連結