问题描述
泰勒(Taylor)的收银员包裹出现了问题( https://github.com/laravel/cashier).当我尝试获取用户的发票时,返回的对象为空.有关信息,我已经将我的收银员数据库列设置到成员资格表中!然后建立适当的关系.我可以通过以下方式向用户收费:
I've got a problem with the cashier package from Taylor (https://github.com/laravel/cashier). When I try to get the Invoices for a User the Object that is returned is Empty.For information i've set up my cashier database columns into a membership table! And then set up the proper relationships.I can charge the User if I do something like this:
$user->membership->subscription('1month')->create($token);
但是如果我想像这样获得发票
But if I want to get the invoices like so
$invoices = $user->membership->invoices();
它返回一个空的对象.
我在做什么错??
谢谢
更新:这是来自模型的代码:
Update:Here`s the code from the Models:
User.php
public function membership() {
return $this->hasOne('Membership');
}
和
Membership.php
class Membership extends \Eloquent implements BillableInterface {
use BillableTrait;
/**
* @var array
*/
protected $dates = ['trial_ends_at', 'subscription_ends_at'];
public function user_membership() {
return $this->belongsTo('User');
}
}
推荐答案
如果您将其作为JSON或类似格式提取,这可能是从控制器返回的有用代码段:
If you are pulling it as a JSON or similar, this can be a useful snippet to return from your controller:
public function index()
{
$user = auth()->user();
if($user->hasStripeId()) {
$invoices = $user->invoices()->map(function($invoice) {
return [
'date' => $invoice->date()->toFormattedDateString(),
'total' => $invoice->total,
'download' => '/user/download/invoice/' . $invoice->id,
];
});
} else {
$invoices = [];
}
return [ 'invoices' => $invoices ];
}
在Cashier v7.x中测试
Tested in Cashier v7.x
这篇关于Laravel/Cashier发票()返回空对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!