【问题标题】:hasManyThrough returning empty arrayhasManyThrough 返回空数组
【发布时间】:2020-10-19 21:03:53
【问题描述】:

我的 hasManyThrough 关系需要一些帮助

我有 3 张桌子:

Field Table
id

Submission Field Table
id
field_id

Submission Field Values Table
id
submission_field_id

我正在尝试通过 SubmissionField 获取该字段的所有 SubmissionFieldValue:

public function FieldValues() {
    return $this->hasManyThrough(SubmissionFieldValues::class, SubmissionField::class, 'id', 'submission_field_id', 'id', 'form_field_id');
}

所以我的逻辑是:
将字段的 id 与提交字段的 field_id 匹配,然后使用这些提交字段的 id 与提交字段值的 submission_field_id 匹配并返回所有这些 SubmissionFieldValues。

我不完全确定为什么这不会返回任何内容。当我运行它时它也没有抛出错误,所以我猜这只是我的键/参数排序的问题。

感谢您的所有帮助!

【问题讨论】:

    标签: php sql laravel


    【解决方案1】:

    您要查找的关系是:

    public function fieldValues() {
        return $this->hasManyThrough(SubmissionFieldValues::class, 
        SubmissionField::class, 'field_id', 'submission_field_id', 'id');
    }
    

    并检索值:

    return $object->fieldValues;
    

    【讨论】:

    • 这最终为我返回了关系中的值,但它们是错误的值。
    【解决方案2】:

    Has Many Through

    让我们看看定义这种关系所需的表:

    countries
        id - integer
        name - string
    
    users
        id - integer
        country_id - integer
        name - string
    
    posts
        id - integer
        user_id - integer
        title - string
    

    如果您想自定义关系的键,可以将它们作为第三个和第四个参数传递给 hasManyThrough 方法。第三个参数是中间模型的外键名称。第四个参数是最终模型的外键名称。第五个参数是本地键,而第六个参数是中间模型的本地键:

    class Country extends Model
    {
        public function posts()
        {
            return $this->hasManyThrough(
                'App\Models\Post',
                'App\Models\User',
                'country_id', // Foreign key on users table...
                'user_id', // Foreign key on posts table...
                'id', // Local key on countries table...
                'id' // Local key on users table...
            );
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-26
      • 1970-01-01
      • 2016-01-01
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 2021-08-11
      相关资源
      最近更新 更多