Laravel 5.1 / Eloquent:我如何使用第三个表从第二个表中进行选择


Laravel 5.1 / Eloquent: How do I use a 3rd table to select from the second table

我有三个表: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'));

我不知道这是不是最雄辩的方式,但它确实有效。

相关文章: