在laravel 5中执行具有关系的复杂查询构建器时出错

时间:2017-05-14 08:05:18

标签: php laravel-5 laravel-query-builder

我有复杂的查询构建器,可以从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')
)

但我得到错误

  

Grammar.php第58行中的ErrorException:
  strtolower()期望参数1为字符串,给定对象

我发现此行代码导致错误

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

我不知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

[求助]这个问题解决了!
我用\ DB替换了ImageTag并且它可以工作。