Laravel用户-订阅关系顺序

z9ju0rcb  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(101)

我在Laravel 10中有3个模型,它们有相应的表。
1.用户(用户、id, name, email, role和默认Laravel字段)
1.订阅(订阅,user_id, subscription_id, expires_at

  1. SubscriptionType(subscription_types、id, name, slug和一些使用阈值)
    用户最多可以具有1个订阅,用户也可以不具有订阅。
// My User model.

/**
 * Get the user's subscription.
 *
 * @return ?\Illuminate\Database\Eloquent\Relations\HasOne
 */
public function subscription() : ?HasOne
{
    return $this->hasOne(Subscription::class);
}
// My Subscription model.

/**
 * Get the user associated with the subscription.
 *
 * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 */
public function user() : BelongsTo
{
    return $this->belongsTo(User::class);
}

/**
 * Get the subscription's type.
 *
 * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 */
public function subscriptionType() : BelongsTo
{
    return $this->belongsTo(SubscriptionType::class);
}

这是可行的,但我想知道这是否是正确的“方向”。
我尝试将用户与订阅相关联:

$user->associate($subscription);

但这会抛出一个错误:
调用未定义的方法Illuminate\Database\Eloquent\Relations\HasOne::associate()
我是否应该反转关系并使其成为用户属于订阅?这两个对我来说都有意义,但我不知道应该是哪一个。

bhmjp9jg

bhmjp9jg1#

使用 * 保存 * 方法向关系中添加一个新模型,如下所示:

$user->subscription()->save($subscription);

相关问题