我通过库illuminate / database使用Eloquent,而不是Laravel。
我有一个用户表,一个Stripe_customer_ids表和一个user_stripe_subscriptions表,在该表中,我存储条带客户ID。
我需要在user_stripe_subscriptions表中检索用户的订阅ID,并在users表中检索用户的数据。
我尝试根据Laravel文档更改外键和本地键选项中的许多选项,但查询仍然返回空数组。
这是我在用户模型中设置的关系:
public function userStripeSubscription() {
return $this->hasManyThrough('\App\Models\UserStripeSubscription', '\App\Models\StripeCustomerId', 'user_id', 'stripe_customer_id', 'id', 'id');
}
在StripeCustomerId模型中,通过以下方式设置与用户模型的关系:
public function user() {
return $this->belongsTo(User::class, "user_id", "id");
}
,与UserStripeSubscription的关系由以下方式设置:
public function userStripeSubscriptions() {
return $this->hasOne(UserStripeSubscription::class, 'stripe_customer_id', 'stripe_customer_id');
}
在UserStripeSubscription模型中,与StripeCustomerId模型存在关系:
public function stripeCustomerId() {
return $this->belongsTo(StripeCustomerId::class, "stripe_customer_id", "stripe_customer_id");
}
显然,表已正确填充,因此我希望使用以下代码得到结果:
$user = User::where('id', $userId)->with('userStripeSubscription')->first();
但是我只得到用户的数组和一个像这样的空数组:
["relations":protected]=>
array(1) {
["userStripeSubscription"]=>
object(Illuminate\Database\Eloquent\Collection)#40 (1) {
["items":protected]=>
array(0) {
}
}
}
在此先感谢您的帮助!
答案 0 :(得分:1)
第二个本地密钥不正确:
public function userStripeSubscription()
{
return $this->hasManyThrough(
'\App\Models\UserStripeSubscription', '\App\Models\StripeCustomerId',
'user_id', 'stripe_customer_id',
'id', 'stripe_customer_id'
); ^^^^^^^^^^^^^^^^^^
}