Красноречивое отношение Laravel для вложенного запроса на выбор в MySQL

Я застрял в глуши Laravel Eloquent отношение для вложенных select запрос MySQL, Мой запрос идет по этому пути.

SELECT
*,
GROUP_CONCAT(p.facility) AS facility
FROM
(SELECT
`proposals`.*,
`proposals`.`desc` AS `pending`,
`proposals`.`Date` AS `date`,
`pl`.`type` AS `facility`,
`ps`.`id` AS `proposalStatusId`,
`ps`.`status` AS `proposalStatus`
FROM
`proposals`
INNER JOIN
(SELECT
*
FROM
(SELECT
*
FROM
`proposal_status`
ORDER BY `created_at` DESC) AS ps
GROUP BY `ps`.`proposalId`
HAVING ps.status BETWEEN 4.2
AND 4.3) AS ps
ON `proposals`.`id` = `ps`.`proposalId`
INNER JOIN `proposal_long` AS `pl`
ON `proposals`.`id` = `pl`.`proposalId`
WHERE `proposals`.`desc` <> ''
HAVING `proposals`.`status` = 1) AS p

Этот запрос работает нормально, когда я использую в DB::select() и выводит желаемый результат. Но не работает, когда реализовано красноречивое отношение, как показано ниже.

$proposals = Proposals::having('status', DMS::PUBLISH);

$proposalsStatusRaw = proposalStatus::orderBy('created_at', 'desc');

$proposalsStatus = DB::table(DB::raw('(' . $proposalsStatusRaw->toSql() . ') AS ps'))
->groupBy('ps.proposalId')
->havingRaw('ps.status between ' . DMS::STEP_5 . ' and ' . DMS::STEP_6);

$proposalsRaw = $proposals->select('proposals.*', 'proposals.desc as pending', 'proposals.Date as date', 'pl.type AS facility', 'ps.id AS proposalStatusId', 'ps.status AS proposalStatus')
->join(DB::raw('(' . $proposalsStatus->toSql() . ') AS ps'), function ($query) {
$query->on('proposals.id', '=', 'ps.proposalId');
})
->join('proposal_long AS pl', function ($query) {
$query->on('proposals.id', '=', 'pl.proposalId');
})
->where('proposals.desc', '<>', '');

$proposals = DB::table(DB::raw('(' . $proposalsRaw->toSql() . ') AS p'))
->select('p.*', DB::raw('GROUP_CONCAT(p.facility) AS facility'));

Это отношение выводит тот же запрос, что и ранее, но возвращает нулевое значение. Пожалуйста, помогите мне исправить ошибку в этом.

0

Решение

замещать $proposalsStatusRaw = proposalStatus::orderBy('created_at', 'desc'); в $proposalsStatusRaw = proposalStatus::all()->orderBy('created_at', 'desc');

Попробуй сбросить $proposalStatusRaw добавив это dd($proposalStausRaw) и давайте посмотрим, вернется ли какой-либо результат.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]