laravel怎么把对象转换为数组

laravel怎么把对象转换为数组,第1张

当构建 JSON API 时,您可能常常需要把模型和关联对象转换成数组或JSON。所以Eloquent里已经包含了这些方法。要把模型和已载入的关联对象转成数组,可以使用 toArray方法:

$user = User::with('roles')->first();

return $user->toArray();

注意:也可以把整个的模型集合转换成数组:

return User::all()->toArray();

将模型转换成 JSON

要把模型转换成 JSON,可以使用 toJson 方法:

return User::find(1)->toJson();

路由中返回模型

注意当模型或集合被转换成字符串类型时会自动转换成 JSON 格式,这意味着您可以直接从路由返回 Eloquent 对象!

Route::get('users', function()

{

return User::all();

});

结论:Route类是必须引入的。所以可以调用静态方法 currentRouteName()。

1 - 为什么不引入Route类也可以运行?

因为Route类是在系统启动时作为全局类进行了注册。

在文件 config/appphp 文件内如下所示:

Route门面此处注册到全局,也就是根命名空间。所以在程序内,直接使用 Route::method() 不会有任何问题。

我们在编程中,对于全局注册的类,也需要通过此方法,添加注册。

2 - 获取当前路由名称的一些方法举例

使用Route类的方法:

Route::getCurrentRoute()->getPath();

或者使用Request类的方法:

\Request::route()->getName();

laravel 51 你得这么写:

use Illuminate\Support\Facades\Route;

$currentPath= Route::getFacadeRoot()->current()->uri();

到了52版本,就是题主的写法:

Route::currentRouteName();

53版本到58版本,更加灵活了:

$uri = $request->path();

使用 Request 对象的方法就可以返回。获取路由,路由名称,方法名:

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

到了laravel 7x 对请求对象 Request 有了更加丰富的特性:

$request->route()->getName();

结语

以上获取路由名的方法,根据不同laravel版本,进行不同的处理。

细节上的不同一定要多加注意。

在Laravel5中出现了一个新的东西,叫做contracts,那么它到底是什么?有什么用?怎么用?我们就来探讨下吧。 我们先来看看官方文档中对contracts的定义: Laravel's Contracts are a set of interfaces that define the core services provided by the framework

意思是说Laravel的Contracts是一个由 框架提供 的定义了 核心服务接口 的集合。 也就是说,每一个Contract都是一个接口,对应一个框架核心服务。 那它的意义何在?官网给出的解释也很简单:使用接口是为了 松耦合 和 简单 。 先不讲大道理,先来点干货,看看怎么使用contract 先浏览下contracts接口列表: 代码如下:

IlluminateContractsAuthGuard

IlluminateContractsAuthPasswordBroker

IlluminateContractsBusDispatcher

IlluminateContractsCacheRepository

IlluminateContractsCacheFactory

IlluminateContractsConfigRepository

IlluminateContractsContainerContainer

IlluminateContractsCookieFactory

IlluminateContractsCookieQueueingFactory

IlluminateContractsEncryptionEncrypter

IlluminateContractsRoutingRegistrar …… 太多了,懒得继续贴了,官网手册里有。我们就拿 IlluminateContractsRoutingRegistrar 这个contract来演示一下吧。

首先,打开 app/Providers/AppServiceProviderphp,注意register方法: 代码如下:

public function register()

{

$this->app->bind(

'IlluminateContractsAuthRegistrar',

'AppServicesRegistrar'

);

} $this->app 就是Application对象,也是容器对象,通过 $this->app->bind 方法我们绑定了一个实现IlluminateContractsAuthRegistrar接口的类AppServicesRegistrar。 注意,IlluminateContractsAuthRegistrar就是一个contract。AppServicesRegistrar 这个类文件在 app/Services/Registrarphp。 接着我们看 App>

Controller中这么写:

view('index',['data'=>$data]);

blade页面中:

{{$data}}

就在页面中输出$data的值了,注意页面中输出的变量名要和渲染页面是传递过来的变量的key一致

以上就是关于laravel怎么把对象转换为数组全部的内容,包括:laravel怎么把对象转换为数组、【PHP】laravel中获取当前路由名称、/api/contracts/overview/{contractId}要怎么请求接口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9783796.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存