olivierbarbier/zuora-orm

0.0.0 2016-01-25 12:19 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:03:52 UTC


README

StyleCI Build Status Latest Stable Version Total Downloads Latest Unstable Version License Codacy Badge

简介

Zuora ORM提供了一种简单的方式来操作Zuora对象,而无需编写ZOQL查询。每个zuora对象都有一个对应的“模型”,用于与之交互。

基本用法

通过主键检索记录

$account = Account::find(1);

var_dump($account->Name);

使用Zuora ORM模型进行查询

$accounts = Account::where('Status', '=', 'Active')->get();

foreach ($accounts as $account)
{
	var_dump($account->name);
}

Zuora ORM聚合

当然,您也可以使用查询构建器聚合函数。

$count = Account::where('Status', '=', 100)->get()->count();

插入、更新、删除

使用模型创建方法

// Create a new user in Zuora...
$account = Account::create(array('name' => 'my test account'));

更新检索到的模型

要更新模型,您可以检索它,更改一个属性,然后使用save方法

$account = Account::find(1);

$account->status = 'Active';

$account->save();

删除现有模型

要删除模型,只需在实例上调用delete方法

$account = Account::find(1);

$account->delete();

关系

一对一

检索一对一关系

例如,一个Subscription模型有一个Account

我们可以使用Zuora ORM的动态属性来检索它

$account = Subscription::find(1)->account;

此语句执行的SQL将如下所示

select * from Subscription where Id = 1

select * from Account where Id = $subscription->Id

一对多

一对多关系的一个例子是一个“有多个”订阅的账户。

我们可以通过动态属性访问账户的订阅

$subscriptions = Account::find(1)->subscriptions;

如果您需要添加额外的约束以限制检索哪些订阅,可以调用subscriptions方法并继续链式条件

$subscriptions = Account::find(1)->subscriptions()->where('Status', '=', 'Active')->get()->first();

查询关系

在选择时查询关系

在访问模型的记录时,您可能希望根据关系的存在来限制结果。例如,您希望获取至少有一个订阅的所有账户

$accounts = Account::all()->filter(function($account) { return $account->subscription()->count() > 0; });

动态属性

Zuora ORM允许您通过动态属性访问您的关联。Zuora ORM将自动为您加载关联,甚至足够智能,知道是否调用get(用于一对多关系)或first(用于一对一关系)方法。然后可以通过与关系同名的动态属性访问它。

$subscription = Subscription::find(1);

例如,要像这样回显订阅的名称

echo $subscription->account()->get()->first()->Name;

可以简化为

echo $subscription->account->Name;

注意:返回多个结果的关系将返回一个Illuminate\Support\Collection类的实例。

集合

Zuora ORM通过get方法或关系返回的所有多结果集都将返回一个集合对象。此对象实现了IteratorAggregate PHP接口,因此它可以像数组一样迭代。然而,此对象还具有许多其他有助于处理结果集的方法。

迭代集合

Zuora ORM集合还包含一些有助于循环和过滤它们所包含的项目的方法

过滤集合

在过滤集合时,提供的回调将用作array_filter的回调。

$accounts = $accounts->filter(function($account)
{
	return $account->hasSubcriptions();
});

对每个集合对象应用回调

$subscriptions = Account::find(1)->subscriptions;

$subscriptions->each(function($subscription)
{
	//
});

按值对集合进行排序

$subscriptions = $subscriptions->sortBy(function($subscription)
{
	return $subscription->CreatedDate;
});