olivierbarbier / zuora-orm
PHP的Zuora ORM
Requires
- illuminate/support: ^4.2
- olivierbarbier/zuora-soap-api: v1.0.5
Requires (Dev)
- php-vcr/php-vcr: ^1.2
- php-vcr/phpunit-testlistener-vcr: ^1.1
- phpunit/phpunit: ^5.1
This package is not auto-updated.
Last update: 2024-09-14 19:03:52 UTC
README
简介
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;
});