Ошибка при выполнении построителя сложных запросов с отношением в laravel 5

У меня есть сложный построитель запросов, чтобы получить все изображения из изображений с таблицей images_tags

$tags = [1, 2, 3];
$items = ImagesTable::with(['images_tags' => function ($query) use ($tags) {
   $tags = $query->select('image_id', ImageTag::raw('count(tag_id) as total'))
          ->whereIn('tag_id', $tags)
          ->groupBy('image_id')
          ->having(['total', 3])
          ->get();
      return $tags;
    }])->get();

И два стола

(images)-(images_tags)  1-n
images (
  id int  
  title varchar(255) 
)
images_tags (
  id int  
  image_id,  
  tag_id int 
  constraints fk foreign key('image_id') on images('id')
)

Но я получаю ошибку

ErrorException в строке Grammar.php 58:
strtolower() ожидает, что параметр 1 будет строкой, заданный объект

И я обнаружил, что этот код строки вызывает ошибку

ImageTag::raw('count(tag_id) as total')

И я не знаю, почему это?


person Mai Minh    schedule 14.05.2017    source источник
comment
Можете ли вы попробовать использовать \DB вместо ImageTag. Или попробуйте использовать \ перед вашим ImageTag, например \ImageTag. Попробуйте вот так: \ImageTag::raw('count(tag_id) как общее количество') ИЛИ \DB::raw('count(tag_id) как общее количество')   -  person manian    schedule 14.05.2017
comment
Ага. Ты прав, @manian! Большое спасибо :)   -  person Mai Minh    schedule 14.05.2017
comment
Я рад, что это сработало. Удачного кодирования :)   -  person manian    schedule 14.05.2017


Ответы (1)


[РЕШЕНО] Вопрос решен!
Я заменил ImageTag на \DB, и все заработало.

person Mai Minh    schedule 14.05.2017