与自我条件的雄辩关系

时间:2017-12-13 04:34:18

标签: laravel eloquent laravel-eloquent

我遇到调用与自身条件的关系的问题

这是我的计划

table bank
|id|cash_id|type

table cash_small
|id|title|

table cash_big
|id|title|

我需要根据表库的类型来调用关系的动态条件

public function small(){
  return $this->belongsTo('App\CashSmall', 'cash_id')->where('type','small');
}

public function big(){
  return $this->belongsTo('App\CashSmall', 'cash_id')->where('type','big');
}

但结果是,条件适用于关系表,不在银行表中

你能帮我解决这个问题吗?

Thannk' S

1 个答案:

答案 0 :(得分:1)

不确定为什么small_cashbig_cash有2个不同的表格。有一个名为cash的表,并有一个名为type的字段。然后你可以使用laravel local scope。

因此,在您的模型Bank.php中,您将拥有一个名为cash的关系。

public function cash() 
{
  return $this->belongsTo('App\Cash', 'cash_id');
}

现在在Cash.php你可以创建一个像这样的范围

public function scopeSize($query, $type = 'small') //can be whatever you want
{
    return $query->where('type', $type);
}

现在您所要做的就是在需要时添加查询范围$bank->cash()->size('small');

现在,您的cash()方法将返回所有现金并添加范围以过滤您想要的结果。

更多信息可以查看laravel范围文档。 https://laravel.com/docs/5.5/eloquent