Можно ли объединить красноречивую коллекцию с построителем запросов?Объединить красноречивую коллекцию с запросом в Laravel?
В этом примере у меня есть 3 таблицы. Таблица изображений, таблица тегов и таблица images_tag. У меня также есть красноречивые отношения в моделях изображений и тегов.
Tag.php:
class Tag extends Model {
protected $table = 'tags';
public $timestamps = false;
protected $fillable = [
'tagname',
];
public function Images() {
return $this->belongsToMany('CommendMe\Models\Images');
}
}
Images.php:
public function tags() {
return $this->belongsToMany('CommendMe\Models\Tag');
}
То, что я хотел бы сделать что-то вроде этого:
$tag = Tag::where('tagname', $query)->first();
$imagesWithTag = $tag->images;
$imagesWithoutTag = Images::where('title', 'LIKE', "%{$query}%");
$images = $imagesWithTag + $imagesWithoutTag
->whereIn('mature', [0, $mature])
->where('created_at', '>=', Carbon::now()->subHours($withinHours))
->orderBy($orderByString, 'desc')
->Paginate(50);
По существу просто беря запрос (который возвращает n массива из таблицы изображений) и сбор (который также возвращает массив из таблицы изображений), объединяют и сортируют результаты.
Возможно ли это?
EDIT 2:
При попытке нового ответа Paras, выдается следующее сообщение об ошибке:
FatalThrowableError в SearchController.php строка 98: Вызов члена функция ToArray() на целом числе
Обновлено мое сообщение. Я хотел бы указать, что таблица изображений и таблица тегов не ссылаются друг на друга напрямую. Однако таблица images_tag. Столбцы называются tag_id и image_id. Ваше сообщение пытается получить tag_id из таблицы изображений, а не сводной таблицы. –
Моя таблица изображений действительно называется «изображениями», а ее основным ключом является «id». Тем не менее, я все еще получаю сообщение об ошибке. Я обновил свой пост. –
Он работает! Спасибо. –