Преобразование необработанного запроса MySQL, содержащего вложенное соединение, в laravel eloquent - PullRequest
1 голос
/ 22 октября 2019

Мне нужно реализовать этот необработанный запрос с помощью laravel Eloquent на основе модели table1:

SELECT e.* FROM table1 e
INNER JOIN 
  ( 
    SELECT et.table1_id FROM table1_table2 et
    INNER JOIN table1 e ON e.id = et.table1_id
    INNER JOIN tags t ON t.id = et.tag_id
    WHERE t.id IN(@tags) 
    GROUP BY et.table1_id 
    HAVING COUNT(et.tag_id) = @x
  ) ee ON e.id = ee.table1_id
JOIN table1_table2 ON table1_table2.table1_id = e.id
JOIN tags ON tags.id = table1_table2.tag_id 
GROUP BY table1_table2.table1_id

@tag var - это целое число через запятую, а @x var - это число @tag var.

существует некоторое соотношение между тегами table1 и table1_table2:

В модели table1 мы имеем:

public function tags()
{
    return $this->belongsToMany(Tag::class, 'table1_table2', 'table1_id', 'tag_id');
}

моя версия larave - 5.8.35

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...