我目前遇到了一个问题,就是无法检索包含一个单元格内所有商店评论的连接单元格。
我的数据库设置方式是:一个商店可以有多个评论,每条评论必须与用户相关联。
虽然通过急切加载正常返回这些内容没有问题,但是我想实现的是一个只包含一个商店的所有评论列表的单个单元格,例如:
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');
}
然而,这只会检索到一个空单元格。 有人知道我在哪种方法中做错了吗?谢谢!