繁体   English   中英

Laravel雄辩的关系用于MySQL的嵌套选择查询

[英]Laravel eloquent relation for nested select query of mysql

我陷入Laravel Eloquent关系的MySQL嵌套select查询的Laravel Eloquent 我的查询就是这样。

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'));

此关系输出与前面提到的查询相同的查询,但结果为空值。 请帮助我解决此错误。

替换$proposalsStatusRaw = proposalStatus::orderBy('created_at', 'desc'); $proposalsStatusRaw = proposalStatus::all()->orderBy('created_at', 'desc');

尝试通过添加此dd($proposalStausRaw)来转储$proposalStatusRaw ,并查看是否返回任何结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM