我有三个表:users, purchase_orders和approvals。
一个purchase_order必须得到多个用户的批准。
当创建一个新的purchase_order时,我还创建3个等待的属于该PO的审批。
approvals表有一个字段allowed_user_type,用于决定谁可以批准它。我不明白,选择待定采购订单的Eloquent方法是什么,可以由特定用户批准,因为这些是由approvals表确定的。
到目前为止,我可以从user模型中的用户审批表中拉出待处理的审批。
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);
或者类似的东西…
好的,对于任何感兴趣的人,我找到了一个解决方案:
这和我想要写的非常接近。
lists方法基本上是从所选字段创建一个单独的数组,因此它可以直接插入到中,其中方法如下: return 'App'PO::whereIn('id', $this->approvals_pending()->lists('po_id'));
我不知道这是不是最雄辩的方式,但它确实有效。