Laravel с использованием UNION в построителе запросов

У меня SQL-запрос, который отлично работает, и я пытаюсь преобразовать в свободно:

SELECT DISTINCT tags.tag FROM tags, items WHERE tags.taggable_type = 'Item' AND items.item_list_id = '1' UNION SELECT DISTINCT tags.tag FROM tags, itemlists WHERE tags.taggable_type = 'ItemList' AND itemlists.id = '1' 

Это то, что я до сих пор свободно говорил, все кажется правильным, насколько я могу судить по документам, а отдельные запросы работают сами по себе, это просто, когда я СОЕДИНЯЕТ их, он выдает ошибку:

  $itemTags = Tag::join('items', 'items.id', '=', 'tags.taggable_id') ->select('tags.tag') ->distinct() ->where('tags.taggable_type', '=', 'Item') ->where('items.item_list_id', '=', $itemList->id); $itemListTags = Tag::join('itemlists', 'itemlists.id', '=', 'tags.taggable_id') ->select('tags.tag') ->distinct() ->where('tags.taggable_type', '=', 'ItemList') ->where('itemlists.id', '=', $itemList->id); // the var_dump below shows the expected results for the individual queries // var_dump($itemTags->lists('tag'), $itemListTags->lists('tag')); exit; return $itemTags ->union($itemListTags) ->get(); 

Я получаю следующую ошибку при ее запуске (я также поменялся с Ardent на Eloquent на модели, если это имело значение – это не так):

 Argument 1 passed to Illuminate\Database\Query\Builder::mergeBindings() must be an instance of Illuminate\Database\Query\Builder, instance of LaravelBook\Ardent\Builder given, called in path/to/root\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php on line 898 and defined 

Похоже, ваши модели используют Ardent, а не Eloquent:

 ...instance of LaravelBook\Ardent\Builder given, ... 

И, вероятно, это может быть проблемой на Ярости, а не на Ларавеле.

Откройте здесь проблему: https://github.com/laravelbook/ardent .

РЕДАКТИРОВАТЬ:

Попробуйте изменить использование QueryBuilder вместо Eloquent:

Используйте это для QueryBuilder:

 DB::table('tags')-> 

Вместо «Красноречивого» способа:

 Tag:: 

Я знаю, что вы упомянули о том, что хотите использовать построитель запросов, но для сложных запросов, которые может создать компилятор, вы можете напрямую обращаться к объекту PDO:

 $pdo = DB::connection()->getPdo();