Добрый день. Не могу врубиться (может, если грамотно вопрос задам, то и ответ сам собой надумается).
Есть сайт на yii2. Сайт представляет из себя 10 разделов с фото в каждом разделе. Фото в каждый раздел сохраняются с помощью
public function upload() {
if ($this->validate()) {
foreach ($this->imageFiles as $file) {
$md5file = substr(md5(microtime() . uniqid()), 0, 10);
if ($file->saveAs('uploads/' . $md5file . '.' . $file->extension)) {
$dbsave = new Photos();
$dbsave->action = $this->action;
$dbsave->url = 'uploads/' . $md5file . '.' . $file->extension;
$dbsave->thumb = 'uploads/thumbs/' . $md5file . '.' . $file->extension;
Image::crop(Yii::getAlias($dbsave->url),580,710,[170,10]) ->save(Yii::getAlias($dbsave->thumb), ['quality' => 100]);
$dbsave->save();
}
}
return true;
} else {
return false;
}
}
, где
$this->action;
- это номер раздела. И всё было отлично, пока сегодня мне не заметили, что ново- загруженные фото в раздел содержат фото из более ранних разделов. Всего 4 штуки. Полез смотреть - эти четыре фото есть во всех ранних разделах. Т.е. загружаю я фото без них - в админке этих фото нет, а на фронте эти фото есть. В базе те "повторяющиеся" фото в своих разделах - использую таблицу
| id | url | thumb | action
Вывожу на фронт с помощью
$searchModel = new PhotosSearch();
$dataProvider = $searchModel->search($params);
return $this->render('photos', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'place' => $place, 'actionDate' => $actionDate
]);
, где params получаю с помощью
'url' => '/photos/5(номер раздела)'
и передаю в модель
public function search($params)
{
$query = Photos::find()->where(['action' => $params]);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 6,
],
]);
$this->load($params);
if (!$this->validate()) {
// $query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere([
'id' => $this->id,
'action' => $this->action,
]);
$query->andFilterWhere(['like', 'url', $this->url])
->andFilterWhere(['like', 'thumb', $this->thumb])
->andFilterWhere(['like', 'name', $this->name])
->andFilterWhere(['like', 'account', $this->account]);
return $dataProvider;
}
Нужны любые мысли. Вообще любые, вплоть до "бросай ты это дело"