代码之家  ›  专栏  ›  技术社区  ›  Hardist

Laravel防止添加过多的附加关系

  •  1
  • Hardist  · 技术社区  · 7 年前

    我有一个叫 Transfer 一个叫 Account 和我的两个亲戚 换乘 模型:

    public function outgoing()
    {
        return $this->belongsTo(Account::class, 'outgoing_id');
    }
    
    public function incoming()
    {
        return $this->belongsTo(Account::class, 'incoming_id');
    }
    

    例如,它用于将钱从我的银行帐户转移到我的钱包,或者从我的信用卡转移到我的银行,等等。

    所以一个账户可以有几种类型。例如, bank 可以是帐户类型。现在,如果我想使用实际名称获取所有与传出银行相关的转账 银行 ,我必须使用其他关系,例如:

    public function outgoingbank()
    {
        return $this->belongsTo(Account::class, 'outgoing_id')->where('type', 'bank');
    }
    

    以及获取 银行 转账,我现在可以使用:

    auth()->user()->transfers()->has('outgoingbank')->get();
    

    但我的问题是,是否有更好的方法来实现这一点,例如 帐户 建模,而不是为每个 account type ?或者可能是我的 换乘 模型?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Hardist    7 年前

    $bank_transfers = auth()->user()->transfers()->with('outgoing')->whereHas('outgoing', function ($query){
            return $query->where('type', 'bank');
        })->get();
    
    推荐文章