首页 > 解决方案 > Laravel 在哪里枢轴

问题描述

我有订阅系统。每个订阅都有一个类型,每个订阅都有subscription_type文章。创建订阅时 articles,应在表中创建subscription type大小所在的位置。Msubscription_articles

我有这个表结构:

subscription
- id
- name
- subscription_type_id

subscription_type
- id
- name

article
- id
- name
- price

subscription_articles
- id
- subscription_id
- article_id

subscription_type_articles
- id
- subscription_type_id
- article_id
- size

关系是这样的:

订阅模式:

/**
 * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 */
public function type()
{
    return $this->belongsTo(SubscriptionType::class, 'subscription_type_id');
}

订阅类型模型:

/**
 * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
 */
public function articles()
{
    return $this->belongsToMany(Article::class, 'subscription_type_articles');
}

subscription创建a 时articles,应在表中创建subscription_type_articles大小所在的位置。Msubscription_articles

我这样尝试:

$articles = $subscription->type->articles()->wherePivot('size', '=', 'M');

我收到此错误:

local.ERROR: 允许的内存大小为 134217728 字节已用尽(试图分配 130027520 字节)

显然有问题,会是什么?

标签: phpdatabaselaraveleloquent

解决方案


想通了,我应该->get();在方法结束时调用。所以结果是:

$articles = $subscription->type->articles()->wherePivot('size', '=', 'M')->get();

推荐阅读