У меня есть система тегов, где вы можете добавлять теги к фотографиям и пользователям.
У меня есть функция, в которой пользователи могут добавлять свои любимые теги и выбирать изображения на основе этих тегов.
Но моя проблема, я действительно большой новичок в php и laravel, и я не знаю, как передать значения функции whereIn
Модель
public function tag()
{
return $this->belongsToMany('Tag', 'users_tag');
}
Контроллер
// get the logged in user
$user = $this->user->find(Auth::user()->id);
// get tags relation
$userTags = $user->tag->toArray();
// select photos based on user tags
$photos = Photo::whereHas('tag', function($q) use ($userTags)
{
$q->whereIn('id', $userTags);
})->paginate(13);
$trendyTags = $this->tag->trendyTags();
$this->layout->title = trans('tag.favorite');
$this->layout->content = View::make('main::favoritetags')
->with('user', $user)
->with('photos', $photos)
->with('trendyTags', $trendyTags);
Когда я прохожу, я получаю сообщение об ошибке
preg_replace(): Parameter mismatch, pattern is a string while replacement is an array
чем я пытался использовать array_flatten()
для очистки моего массива
// get the logged in user
$user = $this->user->find(Auth::user()->id);
// get tags relation
$userTags =array_flatten($user->tag->toArray());
// select photos based on user tags
$photos = Photo::whereHas('tag', function($q) use ($userTags)
{
$q->whereIn('id', $userTags);
})->paginate(13);
$trendyTags = $this->tag->trendyTags();
$this->layout->title = trans('tag.favorite');
$this->layout->content = View::make('main::favoritetags')
->with('user', $user)
->with('photos', $photos)
->with('trendyTags', $trendyTags);
Таким образом, он работает, но не возвращает правильные теги.
Может, пожалуйста, кто-нибудь может помочь мне в этом?