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

时间:2015-07-22 06:32:13

标签: php eloquent laravel-5.1

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

或类似的......

非常感谢任何想法。

1 个答案:

答案 0 :(得分:1)

好的,对于任何有兴趣的人我找到了解决方案:

这与我认为必须写的非常接近。

列表方法基本上从所选字段中创建一个数组,因此可以直接插入到 whereIn 方法中,如下所示:

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

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