2015-07-22 98 views
1

我有三个表格:用户,purchase_orders和批准。Laravel 5.1/Eloquent:如何使用第三个表格从第二个表格中选择

一个purchase_order必须由多个用户批准。

当创建新的purchase_order时,我还创建了3 待批准的属于该PO的批准。

批准表具有字段allowed_user_type确定谁可以批准它。

我想不通,究竟是选择未决采购订单,可以由特定用户批准的雄辩的语言,因为这些是从批准表确定。


到目前为止,我可以拉从审批表未决审批与在用户模式下的用户。

public function approvals_pending() 
{ 
    return $this->hasMany('App\Approval', 'allowed_user_type', 'user_type') 
      ->where('approved', '=', 0); 
} 

问题是,我该如何将其与理论过滤器结合?

我的意思是最好的,我会爱写:

return $this->hasMany('App\PO')->whereIn('id', '=', $this->approvals_pending()->get()->po_id); 

或类似的...

任何想法,将不胜感激的东西。

回答

1

OK,有兴趣的人士,我发现一个解决方案:

这是非常接近我以为我会写。

列表方法基本上创建单个阵列出所选择的场,因此它可以被插入的直接向其中方法如下所示:

return \App\PO::whereIn('id', $this->approvals_pending()->lists('po_id')); 

我不知道是否这是做这件事最有说服力的方式,但它确实有效。

相关问题