Хорошо, я застрял, и мне действительно нужна помощь, пожалуйста.
это настройка:
1) элементы таблицы: id, name
2) статусы таблицы: id, title
3) таблица item_status: id, item_id, status_id, created_at
модель элемента имеет отношение:
public function statuses(){
return $this->belongsToMany('Status')->withTimestamps();
}
Теперь мне нужны предметы с ПОСЛЕДНИМ статусом '7' или '9', созданные в период с 2015-10-19 по 2015-10-20. Ближайшее, что я получил, это:
$items = Item::with('statuses')->whereHas('statuses', function ($q) {
$q->where('created_at','>=','2015-10-19');
$q->where('created_at','<','2015-10-20');
$q->whereIn('status_id',array('7','9'));
}
);
Проблема в том, что это не работает. Он дает все элементы, получившие один из этих status_id в этом диапазоне дат. Таким образом, если элемент получил статус «7» в 2015-10-19, и, например, статус «11» в 2015-10-22, он будет в результате. Я хотел бы иметь только элементы с последним (самым новым) статусом «7» или «9» в этом диапазоне дат.
Обновление: например: table item_status
item_id status_id created_at
1 1 2015-10-06
1 3 2015-10-07
2 6 2015-10-07
2 3 2015-10-08
2 5 2015-10-09
если я установил фильтр как: status_id = 3 и диапазон дат с 2015-10-06 по 2015-10-09: мне нужен только ЭЛЕМЕНТ 1, потому что ЭЛЕМЕНТ 2 в данный период имеет другой, более новый статус (5)
пожалуйста помоги! tnx Y