
当构建 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}要怎么请求接口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)