У меня есть три таблицы: пользователи, purchase_orders и одобрения.
Один заказ на покупку должен быть одобрен несколькими пользователями.
Когда новый заказ на покупку создается, я тоже создаю 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);
Или что-то типа того…
Любые идеи очень приветствуются.
ОК, для всех, кто заинтересовался, я нашел решение:
Это очень близко к тому, что я думал, что мне придется написать.
списки Метод в основном создает один массив из выбранного поля, поэтому его можно подключить непосредственно к в которой метод вроде так:
return \App\PO::whereIn('id', $this->approvals_pending()->lists('po_id'));
Я не знаю, является ли это наиболее красноречивым способом сделать это, но это работает.
Других решений пока нет …