[英]This query replace to Laravel. How to write in laravel?
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
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();
or you can simply use for any query you have或者您可以简单地用于您拥有的任何查询
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));
With query builder you can do It un this way使用查询构建器,您可以这样做
$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();
Use:用:
selectRaw
for running pure sql queries selectRaw
用于运行纯 sql 查询innerJoin
to link two tablesinnerJoin
链接两个表groupBy
for grouping results this because you're using GROUP_CONCAT
groupBy
对结果进行分组,因为您使用的是GROUP_CONCAT
Another option use Laravel relationships but for this you will need另一种选择使用 Laravel 关系,但为此您需要
belongsTo
and hasMany
methods created ay your model classes belongsTo
和hasMany
方法创建了你的模型类Also Is neccesary you keep in mind还需要记住吗
You need to
GROUP BY
for every column in yourSELECT
statment because:您需要对
SELECT
语句中的每一列进行GROUP BY
,因为:
group
is wronggroup
错了
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.