select u.name,GROUP_CONCAT( DISTINCT c.category_name SEPARATOR ',') AS category_name FROM users as u
INNER JOIN category as c ON FIND_IN_SET(c.id, u.cate)
GROUP BY u.id
答案 0 :(得分:0)
尝试如下。
\DB::table('users as u')
->join('category as c', function($query) {
$query->whereRaw("find_in_set(c.id, u.cate)");
})
->select(DB::raw("u.name,GROUP_CONCAT( DISTINCT c.category_name SEPARATOR ',') AS category_name"))
->groupBy('u.id')
->get();
答案 1 :(得分:0)
User::with('category'=>function($q){
$q->select( DB::raw("GROUP_CONCAT( DISTINCT c.category_name SEPARATOR ',') AS category_name"))->whereRaw("find_in_set(c.id, user.cate)")
})->groupBy("user.id")->get();
或者您可以简单地将其用于任何查询
DB::select( DB::raw("select u.name,GROUP_CONCAT( DISTINCT c.category_name SEPARATOR ',') AS category_name FROM users as u
INNER JOIN category as c ON FIND_IN_SET(c.id, u.cate)
GROUP BY u.id));
答案 2 :(得分:0)
使用查询生成器,您可以通过这种方式完成
$data = User::select('users.name')
->selectRaw("GROUP_CONCAT( DISTINCT category.category_name SEPARATOR ',') AS category_name")
->join('category', 'category.id', '=', 'users.cate')
->groupBy('users.name')
->get();
使用:
selectRaw
用于运行纯SQL查询innerJoin
链接两个表groupBy
对结果进行分组是因为您正在使用GROUP_CONCAT
另一个选择使用Laravel关系,但是为此,您将需要
belongsTo
和hasMany
方法是通过您的模型类创建的您还需要记住吗
GROUP BY
语句中的每一列都需要SELECT
,因为:
group
错误,您可以在此处详细了解