【发布时间】:2020-01-16 13:00:57
【问题描述】:
在 Laravel 中,我有一个与模型活动具有一对多关系的客户端模型。这种关系简单地定义了需要为特定客户完成的活动。
这是我在我的客户模型中为了获得活动关系而拥有的。
我也有一些条件,因为我只想抓住fdate订购的客户应该完成的活动(跟进日期)。
public function activities() {
return $this->hasMany('App\Models\Activities', 'ccid')->where('fdate', '!=', '0000-00-00')->where('archive', 'n')->orderBy('fdate', 'DESC');
}
此时我有一些过滤器,我想根据需要在其帐户上完成的活动类型来过滤要检索的客户。例如,我想检索所有具有以下活动的客户:Sale。
这就是我获取属于类型匹配的客户端的所有活动的方式。
$clients = Client::with(['activities']);
if(isset($params['type']) && !empty($params['type'])){
$activityType = $params['type'];
$clients->whereHas('activities', function($query) use($activityType) {
$query->where('type', $activityType);
});
}
理想情况下,在过滤时,我应该检索所有具有销售活动的客户,按接下来需要完成的最近的活动排序(最近的fdate)。
这似乎在某种程度上起作用,但在某些情况下,客户端对象的活动不仅仅是销售。
我怎样才能只获得按最近排序的每个客户的销售活动 (fdate)
【问题讨论】:
标签: laravel eloquent orm model