【发布时间】:2016-03-22 15:02:59
【问题描述】:
我目前在检索包含一个单元格中的所有商店 cmets 的串联单元格时遇到问题。
我的数据库设置方式:一个商店可以有多个 cmets,每个评论都必须与用户相关。
虽然急切加载正常返回这个很好,但是我想要实现的是一个包含商店每个评论列表的单个单元格,例如:
store1{Comments:["10-10-2015 - Comment 1 - User 1\n10-10-2015 - Comment 2 - User2"]},
store2{Comments:["10-10-2015 - Comment 3 - User3\n10-10-2015 - Comment 4 - User4\n10-10-2015 - Comment 5 - User5"]}
我尝试使用的两种不同方法是:在检索商店时选择连接列:
return $stores = Store::with('StoreComment','StoreComment.CreatedBy')
->select(DB::raw("group_concat(DATE_FORMAT(storecomment.created_at,'%Y-%m-%d'), ' - ', Comment, ' - ', ShortName, '\n' ORDER BY storecomment.created_at DESC SEPARATOR '') as storecomments"))
->groupBy('store.StoreID')
->get();
这导致某些字段未找到我无法解决的错误。
我也在商店模型中尝试过这种方法:
public function FormattedComments()
{
return $this->hasOne('App\Models\StoreComment','StoreID','StoreID')
->join('users','StoreComment.created_by','=','users.UserID')
->select(DB::raw("group_concat(DATE_FORMAT(StoreComment.created_at,'%Y-%m-%d'), ' - ', Comment, ' - ', ShortName, '\n' ORDER BY StoreComment.created_at DESC SEPARATOR '')"))
->groupBy('StoreID')
->whereNull('StoreComment.deleted_at')
->orderBy('StoreComment.created_at','DESC');
}
但是这只会检索一个空单元格。
有谁知道我在这两种方法中哪里出错了?谢谢!
【问题讨论】:
-
这样做的原因是什么?比如为什么不在视图中按照你想要的方式格式化结果
-
@amirbar 此代码用于报告工具,其中需要针对下载中的每个商店获取所有商店 cmets。我可以在控制器中对其进行格式化,但我认为这样做效率很低。
-
是的,我会在一些格式化程序类中格式化它,而不是在数据库中
标签: php laravel laravel-5 eloquent