如何将 laravel eloquent 中的 int 转换为字符串?
How can I convert int to string in laravel eloquent?
我的 mysql 查询是这样的:
SELECT b.id, b.name, COUNT(*) AS count_store
FROM stores a
JOIN locations b ON CONVERT(b.id,CHAR) = a.address->'$."regency_id"'
GROUP BY b.id
ORDER BY count_store DESC
LIMIT 10
如果 mysql 查询我使用这个:CONVERT(b.id,CHAR)
将 int 转换为字符串
如何将 laravel eloquent 中的 int 转换为字符串?我正在使用 Laravel 5.3.
我试过这样的:
$stores = Store::select('locations.name','COUNT(*) AS count_store')
->join('locations', 'locations.id', '=', 'stores.address->regency_id')
->groupBy('locations.id')
->orderBy('count_store', 'desc')
->limit(10)
->get();
但是不行
如果您想使用非常自定义的连接条件,例如涉及一个或两个列的转换,那么我不确定如果没有至少 some[=24,这是否可行=] 一种原始语法。因此,您应该考虑@Rodrane 给出的答案以及这个答案:
$stores = Store::select('locations.id', 'locations.name', DB::raw('COUNT(*) AS count_store'))
->join('locations', DB::raw("CONVERT(locations.id, CHAR)"), '=', 'stores.address->regency_id')
->groupBy('locations.id', 'locations.name')
->orderBy('count_store', 'desc')
->limit(10)
->get();
请注意,我进行了以下更改:
- 使用
DB::raw()
为计数提供自定义别名
- 在
GROUP BY
(和 select)子句中添加了 location.name
- 使用另一个
DB::raw()
来处理连接条件中的转换
更简单地说,我们从初始查询开始,对于这种情况,我们在循环中创建 where 条件,根据我们添加的每个请求字段,另一个条件 ->where 被添加到查询中。
$query = DB::table($type)->select('*'); //or $query = Model::select();
if ($request) {
foreach ($request->request as $key => $value) {
$query = $query->where($key, $value);
}
}
return $query->get();// or $query->get();
使用 $query->toSql() 来查询字符串...
我的 mysql 查询是这样的:
SELECT b.id, b.name, COUNT(*) AS count_store
FROM stores a
JOIN locations b ON CONVERT(b.id,CHAR) = a.address->'$."regency_id"'
GROUP BY b.id
ORDER BY count_store DESC
LIMIT 10
如果 mysql 查询我使用这个:CONVERT(b.id,CHAR)
将 int 转换为字符串
如何将 laravel eloquent 中的 int 转换为字符串?我正在使用 Laravel 5.3.
我试过这样的:
$stores = Store::select('locations.name','COUNT(*) AS count_store')
->join('locations', 'locations.id', '=', 'stores.address->regency_id')
->groupBy('locations.id')
->orderBy('count_store', 'desc')
->limit(10)
->get();
但是不行
如果您想使用非常自定义的连接条件,例如涉及一个或两个列的转换,那么我不确定如果没有至少 some[=24,这是否可行=] 一种原始语法。因此,您应该考虑@Rodrane 给出的答案以及这个答案:
$stores = Store::select('locations.id', 'locations.name', DB::raw('COUNT(*) AS count_store'))
->join('locations', DB::raw("CONVERT(locations.id, CHAR)"), '=', 'stores.address->regency_id')
->groupBy('locations.id', 'locations.name')
->orderBy('count_store', 'desc')
->limit(10)
->get();
请注意,我进行了以下更改:
- 使用
DB::raw()
为计数提供自定义别名 - 在
GROUP BY
(和 select)子句中添加了location.name
- 使用另一个
DB::raw()
来处理连接条件中的转换
更简单地说,我们从初始查询开始,对于这种情况,我们在循环中创建 where 条件,根据我们添加的每个请求字段,另一个条件 ->where 被添加到查询中。
$query = DB::table($type)->select('*'); //or $query = Model::select();
if ($request) {
foreach ($request->request as $key => $value) {
$query = $query->where($key, $value);
}
}
return $query->get();// or $query->get();
使用 $query->toSql() 来查询字符串...