跳转到内容
Goravel/ 文档
文档/序言/与 Laravel 对比

与 Laravel 对比 ​

Goravel 沿用了 Laravel 的结构,因此概念、门面以及大部分方法名都是相通的。 下表展示了同一件事在两个框架中的写法,如果其中一方没有该功能,会在表中注明。

功能 Laravel Goravel
Artisan 命令行php artisan key:generate./artisan key:generate
用户认证Auth::login($user)facades.Auth(ctx).Login(&user)
用户授权Gate::allows('update-post', $post)facades.Gate().Allows("update-post", map[string]any{"post": post})
缓存Cache::put('key', 'value', 60)facades.Cache().Put("key", "value", time.Minute)
CarbonCarbon::now()->addDays(1)carbon.Now().AddDays(1)
自定义配置config('app.name')facades.Config().GetString("app.name")
CryptCrypt::encryptString('text')facades.Crypt().EncryptString("text")
数据库DB::table('users')->get()facades.DB().Table("users").Get(&users)
事件系统OrderShipped::dispatch()facades.Event().Job(&events.OrderShipped{}, []event.Arg{}).Dispatch()
数据工厂User::factory()->make()facades.Orm().Factory().Make(&user)
文件存储Storage::put('file.txt', 'content')facades.Storage().Put("file.txt", "content")
HashHash::make('password')facades.Hash().Make("password")
HTTP 客户端Http::get('https://example.com')facades.Http().Get("https://example.com")
本地化__('messages.welcome')facades.Lang(ctx).Get("messages.welcome")
日志Log::info('message')facades.Log().Info("message")
邮件Mail::to('user@example.com')->send(new OrderShipped())facades.Mail().To([]string{"user@example.com"}).Send()
数据库迁移php artisan migrate./artisan migrate
MockCache::shouldReceive('get')mock.Factory().Cache()
ORMUser::find(1)facades.Orm().Query().Find(&user, 1)
扩展包开发$this->loadViewsFrom($path, 'courier')facades.View().LoadViewsFrom("/path/to/package/views")
进程Process::run('ls -la')facades.Process().Run("ls", "-la")
队列SendEmail::dispatch()facades.Queue().Job(&jobs.SendEmail{}, []queue.Arg{}).Dispatch()
速率限制RateLimiter::for('global', ...)facades.RateLimiter().For("global", ...)
路由Route::get('/', [Controller::class, 'index'])facades.Route().Get("/", controller.Index)
数据填充$this->call([UserSeeder::class])facades.Seeder().Call([]seeder.Seeder{&UserSeeder{}})
Sessionsession(['key' => 'value'])ctx.Request().Session().Put("key", "value")
任务调度Schedule::command('emails:send')->daily()facades.Schedule().Command("emails:send").Daily()
测试$this->get('/tasks')s.Http(s.T()).Get("/tasks")
表单验证$request->validate([...])ctx.Request().ValidateRequest(&storePost)
视图view('welcome')ctx.Response().View().Make("welcome.tmpl")
Grpc 未内置facades.Grpc().Connect("user")
Telemetry 未内置facades.Telemetry().Tracer("app").Start(ctx, "order.process")
通知$user->notify(new InvoicePaid()) 暂未支持
广播broadcast(new OrderShipped($order)) 暂未支持
Livewire<livewire:counter /> 暂未支持

基于 MIT 许可发布