hasManyThrough Laravel不工作

时间:2018-02-12 14:52:23

标签: php laravel eloquent laravel-5.2 has-many-through

鉴于下一个模型并使用Laravel 5.2:

条目

  • ID

属性

  • entry_id
  • asset_uuid

资产

  • UUID
  1. 条目具有许多属性
  2. 属性有一个资产
  3. 资产具有许多属性
  4. 我想在Entry和Asset 之间建立关系但是我无法用 HasManyThrough 来实现,因为'属性有一个属性'。这里是目前的关系:

    参赛模式

    public function attributes()
    {
        return $this->hasMany(EntryAttribute::class);
    }
    

    属性模型

    public function asset()
    {
        return $this->hasOne(Asset::class, 'uuid', 'asset_uuid');
    }
    

    资产模型

    public function attribute()
    {
        return $this->hasMany(EntryAttribute::class, 'asset_uuid', 'uuid');
    }
    

    关于如何进行资产关系的任何想法如下:

    $entry->assets()
    

    提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用hasManyThrough类中的Entry,如下所示:

public function assets(){
    return $this->hasManyThrough(
        Asset::CLASS,
        EntryAttribute::CLASS,
        'entry_id', // Foreign key of your attribute table
        'asset_uuid', // Foreign key of your asset table
        'id', // Local id in your entry table
        'uuid', // Local id in your entry attribute table
    );
}

有关详细信息:https://laravel.com/docs/5.5/eloquent-relationships