在单个 sql 响应中返回子数组

现在在 laravel 中,我有一个非常简单的函数,它通过 ajax 调用返回查询结果


$sql = "

    SELECT  

        itemID,

        itemTime,

        t2.itemCommentType,

        t2.itemCOmment

    FROM ITEM T1

    INNER JOIN COMMENTS T2

    ON T1.itemID = t2.itemID";


try {

    return DB::connection('mysql')->select($sql);

} catch (Exception $e) {

    return false;

}

这工作正常,但由于注释类型,它返回两行,其中 id 和 time 对于两者都是相同的


itemID   |   itemTime   |   itemCommentType   |   itemComment

--------------------------------------------------------------

123         09-11-2019      Title                   Testing

123         09-11-2019      Comment                 New Comment

我应该如何更改我的代码(不是查询)以仅返回一个具有一个 ID 和时间的对象,但创建一个包含每种评论类型的数组?


我只想要一个结果,但我需要能够在网页的不同区域显示标题和评论


叮当猫咪
浏览 211回答 2
2回答

慕的地8271018

使用模型。在项目模型中-public function itemComents(){    return $this->hasMany('ItemComment::class', 'itemId');}得到你的结果-Item::with('itemComments')->find(123);获取所有带有评论的项目Item::with('itemComments')

幕布斯7119047

我认为你应该像这样按 ItemId 和 itemTime 列分组:DB::connection('mysql')->select($sql)->where('itemID',$id)->groupBy('itemID','itemTime')->first()
打开App,查看更多内容
随时随地看视频慕课网APP