我有三个表:users,purchase_orders和approvals。
一个 purchase_order 必须得到多个用户的批准。
创建新的 purchase_order 后,我还会创建属于该PO的3个待处理批准。
审批表格中有一个字段 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);
或类似的......
非常感谢任何想法。
答案 0 :(得分:1)
好的,对于任何有兴趣的人我找到了解决方案:
这与我认为必须写的非常接近。
列表方法基本上从所选字段中创建一个数组,因此可以直接插入到 whereIn 方法中,如下所示:
return \App\PO::whereIn('id', $this->approvals_pending()->lists('po_id'));
我不知道这是否是最有说服力的方式,但确实有效。